From bce261d095397795d844d25f8115300048d1ed01 Mon Sep 17 00:00:00 2001
From: Jueun Park <jueun-park98>
Date: Wed, 1 Sep 2021 23:51:12 +0900
Subject: [PATCH] Update

---
 .../6.8/executionHistory/executionHistory.bin | Bin 5678547 -> 5678547 bytes
 .../executionHistory/executionHistory.lock    | Bin 17 -> 17 bytes
 .gradle/6.8/fileHashes/fileHashes.bin         | Bin 764131 -> 764331 bytes
 .gradle/6.8/fileHashes/fileHashes.lock        | Bin 17 -> 17 bytes
 .gradle/6.8/javaCompile/classAnalysis.bin     | Bin 1195846 -> 1196345 bytes
 .gradle/6.8/javaCompile/javaCompile.lock      | Bin 17 -> 17 bytes
 .../buildOutputCleanup.lock                   | Bin 17 -> 17 bytes
 .../st/openapi/HttpURLConnectionExample.class | Bin 0 -> 3235 bytes
 .../inf/st/openapi/OpenAPIMain.class          | Bin 3109 -> 3109 bytes
 .../java/test/openapi/OpenAPIMain_test.class  | Bin 4979 -> 4979 bytes
 .../classes/openapi.OpenAPIMain_test.html     |   6 +-
 build/reports/tests/test/index.html           |   8 +-
 .../reports/tests/test/packages/openapi.html  |   6 +-
 build/resources/main/petstore-v2.yaml         | 738 ++++++++++++++++++
 .../test/TEST-openapi.OpenAPIMain_test.xml    |   4 +-
 build/test-results/test/binary/results.bin    | Bin 81 -> 82 bytes
 pom.xml                                       |   6 +
 .../st/openapi/HttpURLConnectionExample.java  |  81 ++
 .../tudresden/inf/st/openapi/OpenAPIMain.java |   2 +
 src/main/resources/petstore-v2.yaml           | 738 ++++++++++++++++++
 20 files changed, 1577 insertions(+), 12 deletions(-)
 create mode 100644 build/classes/java/main/de/tudresden/inf/st/openapi/HttpURLConnectionExample.class
 create mode 100644 build/resources/main/petstore-v2.yaml
 create mode 100644 src/main/java/de/tudresden/inf/st/openapi/HttpURLConnectionExample.java
 create mode 100644 src/main/resources/petstore-v2.yaml

diff --git a/.gradle/6.8/executionHistory/executionHistory.bin b/.gradle/6.8/executionHistory/executionHistory.bin
index 2b1750df8a906f384bac3c1fb159b021be4aaeb1..58c56719e69feaa017c2064de75d24c833bd55e2 100644
GIT binary patch
delta 5943
zcmcb7`W6!iZ>USvILg2fe{^<sYDQsJX{m8eR$^g6UZqiKVnu3pS#DBcA_Ev$e%-t*
zbuuGU+Of%nUu-AO&*a?Pn4aOlcpbuBF04~#q*s}ko5L(nHMy-#W7n#y6CMQ5QQ6d)
z$T+bewWPQtzbI7~s^$t*lhAaj+pKDv<5%P|3Vi-;`(~fT=C$m<O8gD~o~@gFXJs$z
z?A^=zc1_M(WyyLD%v!U`hV>tq^>&pV>&87GS%cMPtUti4?A7+HANGR8)~~i=UAhm%
zdbiq=_2hmKOJ|Ke>)Zn%R>2x$?k^yg{;g>&jB_Rn=1EUJxkiX}*+G!(gEgM4=fEtz
zwHB<i4}rw8*P3&`1hMp2PUc};JAK|8FP+IZ*9x(|It-Hju-20G*bxv*Z=EgcyrUpi
z!8$kAuVB{hb(Y+lk1g-prGK`GiE-Iv$MvGqxj%RbOjcPh#QNkoNU`;L7w(fMKuT60
z<Yinrd1INx^qh}g0+Tnb7vlbQ5+u>{Sch>NNMf>2ne1ei4MJQiPl3d@Rxqxfys=Dc
zveyP7*4d{)rX_B$=lld>>3`nNHTmNv;mLb8sBxb@15&>IlK|t|$r~$lCQEJ<V(mN&
zQg5))m-8NorN3h(@8tX{lgYa_3bF1z2a>zE(U<cjh^7DS3KQ6@-_;_M{Wb}4UOW#n
zueC>N@`M`A$&)q-aqqnV68XQBi*dzd##;5s*ER{UPPhm%<?SY0*5_cB{$?B2ZI?h|
z1)H5XH(UnkINmKX`9Zz*<Y$|OSg&3I$^G5z&bss}h~>G(m3!_rkg5s)*%_Bk|MS;N
zW%AxFLYzylg9JDCN>85Cq&oTU79q}t8z7PQ-C~pNo7E=UZ584^0v37ol9_SY<h9MJ
zlN+`Qu`a&}GIsh_3-0b)AoX`T#Tb`Ne&3=z`R`UC?sK<6Viz~KFfN@uu~lWV-8Lca
z?RP+8vp=vhuAMxwRd{+olegsL_H9C}C+~ucnzzk?yWu`a$?9$TjLX4FbXmNGC-ZL?
z;=Bu%xYf@-nQ@2c<bV#*$syZ?ShqX?Y0Td4$h!0)h_!LMJL_FA>+g04&OMJnhTVF_
zJ-v_JTW5074k6a1k3q^hci6M8dIDmd-QmEw?<q*xpG^jnC-#U;FW~eRo9wVti1Y0;
zknqJ-l9NC58cy!nDa3v6IY{LAVot{Olh^l(O;_OdmY95frx5F@7a+6V?R4T^_Y$OJ
z)+u4e<&!V=tI0A5th$ijC}gsjDQE50n^ilD%Km{>?3mBaxOwu$e(}i@CP+`-uuF(@
z|0|HrsckHi>nEDYG6;m6ebDFBlyvHZ>83TW8g^Lx0n7j2!^*gR^1{ht)A#XtOHB6J
zEyQ{7HAv&;lbn-3Owyh_X}1vP+czMQo_8jb=TFv|d~>%D>$$fe2Y%S?z`5!jNbd4J
z+3AIX-iDL2_6V{52MJAX+~dyr`aMY5**!L_-#&m?e0yzKmwW=T0`_{b-T<@a@AY79
z{|pj)v)7V!Gnl2d&z*C^7m&fzUI<N|I7ei1-##_gpCFORJNG%Up8vYMZ`Y*#PMp)e
zffTL3!ajN89F57v`-QmYe+P*?Im^emXfoqmMOg-c19jh4>RKs${r=75CA-AwbsxYg
zPR-?HTrqk6T=mIc_Y1Ku`2lhO&jAP46+c0&zypq)e?ct$#@#&A3uU}@C!aVV#QOOc
zNb>#xd+z7ILDoFK&ds=J^8W>jlf4cKv99?8l1)5l$$I%Oh&BJ9HS3vwAlChZ7OY4A
zgIF?$j5$v?tmxaN|8{}uWV<EGldBI2akeyqL@s?}o?ffytvq?>AtBZcEi3wVO}=o*
zoApa8h^27YlC`@H#ELtt%X$RNns8Wy<0*)x-)=wo;&O?}Hx3KME@%gt_17A+aA&}%
z0M>xjuA9cl*axc#^s<Wc^B4psA2@ehr(x0W$XVfcrRHA9xCvIdX8Hp)Fa61$M}$~^
zfCMHd98pr9(*d&Zt|v1CMpePW$iNVPiE;My3F)j-%^64AGmbKD&p66td_t)rGbgds
zydX6tE!oU8D<!?S#M~$|-z>kV5L~M<us_=V;Sc*ArtLE)Fh5--WZ)2bsH=Gi?<eLZ
zivr#%L@~~r{&6Xz<n)!+EFJ<Cvv*i&?h~0&;kkA9VzvMJ(;018+UzFSzcxD1bgswt
zaQKnQ2Yy=gKRtGRr~YR(W(I-nR;}~@rL}ARxp?7gp~&JN%nSk_cbak~I={L8*05sw
z@p-w|wr>n&v1V+uV`;NvZL?!*vtw_w<7l(vY_sFqX2&gjPW9R3*=b2BnZ>CUCD~~y
zg;gn)6-LP^Ng1gH8QGN(Kkyv~`N4=~`)zJ+Cr+ldjMFc&F*;Az(`S~^_b4eT2o3Ua
z&d<wBO)kmI&vUIv%q_@C)yqmOOJo+9`5^PR*C+P#e!De&_ump|nBJJeC?|?l)AWzt
zjE<8ReBuHbtRuuMVC(QXZ&8wp;heqaKW=ZF{A2sag-nLR+Y@woK4&l`ADmqH#Zgco
zbI(Di({jJBv1U%y$+GTwK6&9S$LTMo@dzT^sE5@$m>V&jSh$3(0E^{I*lzM}4_eAo
zufnmU<3`^u{cFn8=U?Oyo&N45j{xhJ&KrHZrk}sbB{5z46psLFOBaZ5c%NHrx*LeU
z9;9Wu;w26-(WZ)3*ZWtxZZ3YZZn5g4<aztRQf;SrR9H`enH%nNTd<z&1{v`7KDQ|g
znDy}%mlf+DFw@{Rm-6)X(>wyKH^BV454bH@XM>psZ?KuOt^zY3-sUo8eFA0%JmfZE
z-2rA6++>rRzU&N-0BdIt$b!Zz9E#KLfcS5~F8+9i$C&jRm??ORO?tY^Ssnq_hhV<r
zEjH2Vc_97|FyH?!m-O^`ApTUaQT2DZ<iu~yFnILV=4aTJ4r^JH^kk+bASwMv(=Xg&
zlay-bRCvh9;kDPQ^|Xk;YEi~{u;iQw#wpVi4JC!A>z(5f;`-bV3fvhQj5DSOI<tyP
zG6+N{&(Ht5$>X``+U-w%e0}rb;RKM1N7FCdW|N*i^&F1?$5*h(mSfW&UgMCMeiS71
ze<DcH8?Wi}?y!l8Cf@LI?_2YdFDN2ok;~gzic9)Hp658vqs+Rp7sNC;&tt&V28u-e
z2X2g0r+@Th6`5Xlo=1r52uP{^giOXM(+g9*gr~1P&m+XT6(l(Q$ax+`)@2~~PJeZt
zM}>7ENdNTSXWUZLbuaJ;uzmoma=O5y$=VBM7F^&_XT1yZ_4GLxc+|Ldf&x<inhN8L
z=^L$h#iu{Mz$3)E9&F053p@&}|G-M+FY+j|9tAto@CCQz^tg+lH~|}2e33_!^%9u5
z@FI^Y$AgI=U++_%zA%|tM09Gx{EH{8*1bQ(bT%q!O`-I(Ng%I&zsRG(x({qg{T&X8
z={A>m1Xw47`GJ>sv{)B|RW)4VQD;343fJjtF7fEIUIsHCT;fsV*a>3lKT)54{w{~u
zbd}3I0<0%M9+@8Znp<XiD2TrT?4+#AJZc=LK_=_3Ql5U`5u2pM^mOr33lo*wooByD
zPG#M+cN55m`Val4e|*FyC0adwYHY8t*a!Ef#L4Hr?M}Y{^3HVGH{24_1+MT2a7_YP
zqrXX+amsYVSuDcSZLjbMaqk4VSAYH;M#gE=H_l=aot}S%M~HO?I9l4S@F=qW1m~)Y
zZ@5LKAGpFJz_AS!l={1rrysb_At@Oyu<3W3%qD}>9s8ed>vvIX06ATM${NPW?~h7|
z)^P0mp%y*gD22H(H+Si6k$$j?%&+pOvc3Z|6R+|pv0eh1IKAU4k1EG|u!mZ&PhN0L
zZ2IY|JOZr8LGGLW;3|(I>uj*P-|x63r^{dC5n#Ou3Y+OB*LW1!K{B9FnxD!nJ-r+x
zc?Il)o@+e1th2#Z?YqXK#rh1a<?S^dZPwMGc$hAGokxq~8Az@E42|gxPdLP;r(Wj~
zV7&|Wb=7qqO^zmzcKv_q(*vuRM5iAB$sPnbbNa%k9BR{lgZK?#vjlGNm~!=jnEIQo
z8Rt(ooWLYDJ>ZBT$MoDAJVLCqK{C?=o^dEnUwVT_fa?I*+>L3Bv!*|I$|yPg21wBg
zkl^(9H+VGJKY%?oYr5lWHu>pxH+cj&W`W(g&~5trQf9g7B{z8lSpR~;dwS<h9tGB;
zAld2bZt|$H-U0{O&6_+*tPen@OuNOS7P=4|{Zmbu83f`jC-bjf8otmx##%jM>Gltd
z^Kq8)$vKI|#S8+Q9GyQ-F5yr#{3QJ@=C~Tq)!*0qcIhvcobGswN3{N2WBHqJf|uK-
z=zYIlIP*aJQ?Tq(31$X?4!iKV6C2KZubar6&m#9-mzhD}gu|la2cE^*mj1qO#4x}7
z8#99d=f-x=DXT0#&+oB_-}uyQDKmpW(tB%>B%zJzA`AYS9B>eR$;=>dJ&E<;RyRRi
zvrcXSL;JgR3@!OZ=?q=@)7@^eJF!msd%bVh^xm87I;;!-fSCJkvKz4e1vzE<$8u&j
z)>U8ycDLBoS+{|i5590KupR<4`$3}Tz)Zuh+>We2z)Z&5>}sr^A<WktdaTdD%=p{v
zdaNz~KvpQ;<<VrF0A?Pz&F;gx56l$2!>-7B3e4R1o=t=G8kouWgGZlr6PU^Oo!g)F
z9hiCW4Tm=CUoi9I8xD2$&i|l*eKP&x2R7m9v3J=8Sm%R8rZe8>F<@N<X3GBH_F~-%
zW;!-8DNOJA!7ac#73}4OKe%;Se}b8@_t*_s&w`nX4|ptC4}zKJ@3GsmZUZv~@3ZT%
zz6CQM{^HSRZ3BDm-B0cm*6(1$AKquTVSNB*ZhXjN#d-zIOnks@%=!k*RQSRsJ6-2D
zw*YHj1E_3t{LQT}z3LH<0PAKDf7(NKE!J5e)^z=c?0T%rz|4=2cr013fSC&(vRklT
z2Q%+JWY=VU0%kV;;Z|jR+6Xf6;u|h?)}KuvX5u4u71lM)Ag16qHZ9g=U<D4}*mPM>
zgPDncxm8&If=$@?k4KYr6Ik@(6CP#O>tN=CzubzfJHaMQc+9TCdJN3e|HrM!`T}f)
z;74{f)=yv)CVppAV_g7NaPb|NI_qRGGw}(#D(fRKlkq>d8f!CH8)GMv*z|uN*#%hp
z!Tg6$*tJ;yfK>@RWmn|*46<E+wZnA9M;xNl8$PiMu<ivZoW{tj%6b;Wn!f)NyE5xc
zkh<xCAGi!zZ-YdqCh};rwt>u<I*~`2bq+{u`U6H@ZPs;QW?>7n0_z8m{B-$WYznOV
z!1~{RW|y3v`hv%TwW9?TSR0slwOA*EnHOL1*s-1jGZjB^8L-Z61u1a+&8Ew`1<XA7
zox_;*5QNFhYsPvG%$)d@-GKEPSeqdWuMz7lu&5(5j}Gf|F!SOM4lUL%VCF(*9$nUk
zHjugf-`KTS`@qb^pB(zEv%t&)FWEI&*MSXF_|C4+x*ROJ@imVg>lQHc;}<Sn)&pQB
z-#<3_=`yT50<71;d_z_qeb)D2rs5BFE!O6CkUarE*i~33fSKq1u_;c!2huPP%wPY5
zU5|A&n7QFKyAJCvF!SMSc1zadU}oS?b`$oSAg2Dw=@0+2Nlh2{&LzP53?wrBKO2t;
z>nAWX@EwmP>whrw!y9&O)<+Nzyk*y9?E+U64ZqkOS$n`iV93d<#`+Je;NvfLE!Iz9
zrowM_$>|=vyp{q?9QkG8KI)|=%cr<p+mXS#eIhTf6(cjlvjy#IKJm1#`NZ44<`ZB0
znos=gYd#6IulXd{zUGrq`<hR}?Q1@Xw6FOj+P>zKSo@k!;_YibNwlx|B-y^^lT`bf
zPtxscKFPGN`6S!E=966enosiWYd$Houlc0dzUGrs`<hS6?Q1@%w6FQ3+P>zKTKk$$
z>g{VjX|%8Tq}jgalUDnhPulHkKIyct`J~&v=96Cgnos)eYd#sYulZ!yzUGrr`<hS2
z?Q1@nw6FPO+P>zKS^Jt#=Iv`fS+uYDWZAyvlU4hgPuA^gKH0Rd`DEL^=969fnosua
zYd$%&uleNIzUGrt`<hSA?Q1@{w6FQ(+P>zKTl<<%?(J(nd2C<v$<x|jg-}N@){J4z
z^oN{mqT3amymC1O(7SchFUm^hVRYZ7OZ#}$V^yoLoqrjlpvd;y30`a$F!XKzXyAR1
zn{~&$6W4c6zi98R>Tm?a)K_8bDM~Fa%_%9?OUle+5O^W9J0f4#+{sEq-(E`L+u5UF
zRYA-Q0)K4zpZ==j{1kMx+vUX*{Y%pu%MF)kOC{N*aIhVFf9Sm5&iCyzcHf$R;`&bg
zhaSuf0<Y@M-+sGNSJmFV?A+E`k&Nk%5lp2LKhuO7CeK~AdeIN_-!b1Oq@D+BSS37N
zP)IV&&VIXywR`FLy-SNeR|cNgTX+L3yGDSSK_Eta<rFh-8;Jw42et^!IemzkLEyrE
zbH7iojH|rgOc$ERp}Ku~U=h>g>HBTG1*qy##{wo*!~IcHj#wt@d|>==U{81HWZS>s
zfca;|%pfpr<H2;E_H{K6XJ5JU`+GqaXmsG;`u0FUsrEoY>GnWDnf5?I+4ev|x%NOo
z`Sw6Th4w%}#r8l!rS?EU<?VrjDrwKB8yJNpZuk9TP!Ye~U&ZS_@Ag$w!!!i|fWbzI

delta 5699
zcmcb7`W6!iZ>USvkYQkmmzkYknrog>l4f3&l$c?fYEqR}mX}m$lA4!O$^Ztu-J6%C
zPG)3GowUk*b7Ojj1LKv+jH}!x8?4}*E_It#ZS(CFxr_pfjxIcw|E%@JYxC<VTMkZM
zJ2_%iFYEiMe_!sH{A!gY_a6{Tf5`@B#--C6xAMwP_FgT?**Wd+%N_bNuQE=4n5i*&
z>S`g@X&{lwYgU_a&j7LXPk!cRTrvH@GcWbYB5Q;=*MSAE&*htb;JKH|<lr?zoQJ_e
zlixB<PkiB}EY2Wc+1#_{p~a59rBBxhC3Zb6xeih=dBqxg){kJ;n>EJVe?ct$Thmw=
z=S&vNlb-ClR*1ECI>@atYdyJVfmr%iZZI(}oSc}iF!{n-A<mUxu|MYoC+ig`PUcxB
z#C;GfvT`yH<J#%--gxOu4qYe2dL1M<IcJ?E=UWg<|N0{K$qGg4ldrB5Vr`lMvf#}+
zH`du;mic;1&aEJp{@Es`>AD}h)F&@kFT{NeEVRE}fN||~{SRKElNXeTPky;xi1jW=
zV$uc&?(ZOme$Qha#%+@~mPt(ZDU+StutA7x#!OIfZmnQkJ$Yl9*5qRwgjm;rgeKqJ
zV9$CM%u?KF%l!_-(%=3`fN|~QjTJhRr*0JDY@P+ux}%$Ua^NQE>GQvO$xME}QHXUa
zNO<zUjb5y)z%1WQzO1{!tofU4Sx<vm4>#F!J^``x|1ag5{BVQtWZzn`$w8ZiIKP8M
zHyjY2&i~6xee#seLae>BL1D0Zvkm785KF(Yop-Wfz0PErEkc}!z#_-HMJ7L}*PfiT
zMTqqSNMv&57I)5xb3pE!xRQ0UPow_iA6tZ27lK44^KZ3b-3Dd_Y_(=R4`xl+YQy>r
z%(}SMmh}giCA`gob>du*-2vOIS$Be26Smo~J^`~XZgb)O1!Czhx?<0`a`MDh;mLp6
zL??S}7h+vL52P!8yB+rl5KI47KRZ-KK!@n$3)_XbZ-T{l?PFtH1=2ZbhX(5pkkDk^
z9q!!y^Fa>Z|CpI^<>bIFjmgV*2(c~%iA~<O!-;bzh^7B)hTwEt4sXrLMmvQ#uY!e6
zZ<d%mu}5oi`A#9$cOa3;eLEdECoTXPc5#*D<PW`ulR0(?u`UOROqSo}#=Q%~(!ckF
zi*fa2#eS{Hvvvuwo&$+Z-nh$-`zeT}zhgc-<L1d1`^6_um>@k_XSWdNH?a8BHkQft
z6U`>q?iS*nxDaH=|2?dX>nAUqEH-(=ZY|cuAhF5!cRO<K2eI^f-kD6EKUrsT=pG@~
z2OyEjIeQ#fKZ02s_qelmE&_$w-#zY}3qUOW9}Rrd?+JOUO)lOm#JwLZ)H_$5aoOa?
z8KRTlOcR*Ab*~WTW3c$)721;zPB)p%vQLP$X)(wc>3tro6Tz&EeU_{Xz^rBa+&TAx
zSo+gm2u+?iM`XI3xVOk;x&1<%*TKSTz6wol*e^1@PuyE#a_W8|*0&(x$u;|(IRAoJ
z`s=T-Po6kOWAgj`Lfkz|Kwf@wmXC4KWX8FQlXVXWanA*dotn$ZxMK4Bx$4pk0<L=u
zmrTy>+Htx<;J>s~)~a=26<@cqP8X2&)|$NSfDr3mkkI6_2OK$XfLQvCyLqM;%6RKe
zb~z}-`3@}fd9UbnMOkmn$sGrUSlgF^JUIWLCF?9O>+V5I&h;Rc{?yqjlM5E9PIfsY
z#Ci)PGCBH?1?x93YsMjC*4||xofi&SvMvX+_zqjLo&d9a4tujUuK>x;Ic&)}4aCxa
zc#d!S0TnOt$zKl(aV!T5?G~N>QHoV~veFSDj;&ykcKgW}mrG0zIU>Yy7%cGDdh+Ze
zimVqwoXH1|IJ4dcvpA0`)jtQZ^zV8yGhmeaEQ|~c@tXbxC3?v@iN(bX0<A|1ChuIm
z-^C~Dt5M($x6k`GonE|L|E4@+pMOC~W`15VTw$i$34ad<M!prL?=%}1%U=X5Jgm$(
zAt13RF*mg&wFs(ILSX)#AC-sPzAu>_wLf{c{LYPUz-k{&f0)87C9%8e*|{5gemr~r
zn0eCr=n0n7wt{Tj+B*H?eGd8NtfTE&M;W(g9c3~+p;VQfSYBmbnPr-mR&JV{pI=f{
zn3tHGn_Q6#uKE}l4sQSOhy4!I_L&oypRN+}f6D#d@vN2luK%9%Lo_VrFwUF)aVewZ
z^p(~u9s=U~*qdHowenjRB_P!`|BB>vMjMtkJJG`};hQUE4&L3B&)VqE@NLta=WloD
ze^z5=5V*)YF{)^hrjKac)dS~O?rLUc5IABQ74h|o$-&pR%-$>OP1E1LF_gucvCWR9
z&5pIrj;+m(z0HoJ&5pCpj%%A8x9~Zpr_7TTFDNqcCxhH+#IpT1H@6cf<C^IU1=x!O
zt_m#vHM3K0mejHv$p@0><ZS=AkjYSZyQUt`=Zxw8^Eg}t7RcS-{&?y~6Y-Za@26#X
zFiu{0%TZ9kT548qdTC*VbMb;kb&Y2yrWY<@E8s^nZMtBcpxO2X`pipsx35^nQ?J5$
zV9MgBJErTL=FwoCI}OA<f0Ii>^!7jLMRV;hpZh7SY;wA8*N0VLDZ~5RV$<iG<`G~$
z4c4{sG>;nVO)&G$X&x2Umtf|G``i|+cc+8QdV8PSgmoR5`SBK)6>Gx`kf_0JF6HTW
z&+rJaz5q+jeZXzOx)aPic!SNH^%$7>@HUqz>lZLH;32mO>qRiL;3k{g^gm~L1Xvrv
zW(l6-F=U+zmfCxVOL=<MIUWJluVB{--eQxUJ`2Qe0LwexViTQy1jJtm=KJ5}lAitr
z#Ge8-s{SsQ+;sKxJOb>CKz#j2(=Xg&lbjxYo=1T75=dlv&Uqd!uDNp-Ki#1}LxXX~
z^gw4;@#)*o^9ZrdnG5pRx$``_tm{F{X%~33S$E6>2^w7B(PUjZ3&f1Oz@yBuY9>hk
zHs$FKPq}5MFT21az_o5FNa%qZ<J9RNJy}JjU%9{|#C08{MSnsj<CN)zsb0d<nJ@AP
zu^s{mPM5mKqsV%GHpobai##f<r$G9r_des660L3t-83yfb?xd0uEl$%SMW~(tD13<
zN0Xxuq*uRNWBSB<Tq4u&UgQyAeF*l}r;9vlte3%ICVPoTkM#!FxPVJM3apJF$4)Q3
z#G}Z11k5yi!7Vv`%OxHG)>g2|Col16vOWQsJpKD69#z&kU_UEf=22%o4rcmZ=Fwn%
z0yeS!4u^#3t0n(tp9#xItaz+yxbEBywOwE-fmhs8;;!<qjM%?8|33b<WT{%@s%!T_
z2I#Mz?)ZvZbo$%NJOUi=!D0WVc>4TT+%lrOSnSry9M_Rsbn&lc<&+G?eo)9yH@m{4
z#`+MXaC+hu9!=I4V2|}*;n88;0(R$tD?Dl(UqIICuTq|V;1QeTboQ$}0vsDafuaA<
zZ~DhaY*N!Lukr}6P5`-Jy5ChE4X*7VWAryEGftUqIEzJi`sAxTLfjuf^7`}dFfvY?
zzHt_d==7skd4yQ+gG1)dRUSpw1t4ptUwp$YGF|K%j{wJZP$25>Ql5U`K8NIV_iH?Y
zEMPaqT;tJUJqLDw?=>D()>R;br*FT;qr`d<q-FZOYdoqPU%@VHy*_!tF)`757PWeo
zd@q@n&f@-i?R~0T(|k~RFuTs9$T}CSCFVMhCTkPO+0(nO^C+@_1=nBa(c@|Wg^vEd
zK*s6QKZZ(*P5*nHM~LeV$aekx8jMq>Uu^Lbp00C)M~G{}G*HU?uE;obdSI)U$n+SH
z;AOD($#slVrYE*}2~Y37!6U>m5iB@EV|v3A4zcOGZ}14Pc7Q#9;RcT;>miWg)BoMz
z(O^9S^2GFoPdU^i%ubzL|BLzc;ZV7FKdb*d6IO%G=<=L?|0##k^zNHH0<1egLem%A
z<S}JE0%it0<4~Ob8zj{P4kLkEJO&&uK*sAo)0p;|M{IiBEgk{(S0LZ&&zkP|noWNC
zlv_Lk9P2@`qQB5>`ukF5x#_2F@d&Uk1PM*Qe~U+f^&^<ca+^nubvig8^>6bivEBul
zGM(=WkJ$8_+dKlSM?k?bz411W`1DJ+c|_`C&5t~hJoM*jfp^Qt*~MRW{%ivU*HQ^)
z27!Bdp)pw^OUn-0)F0ZFvQ&hbLEx$K*9P7t2ezCGc)Enc?xHHF>NsA{mAT%cL^4)b
z-fZD2R%QkP`8k&1vqfL>1l?jfHce~tab^aA5A`{sVW0MVtd-q$dxl9@8AD5cQ946c
z{&csS>`tspJ3tZNdy`#<b$>gEx$h>s0qaCC^J6))8|z810=rx6>a176%m-h%6<8mF
znf)NqZ(ye3S8hkvRh=Lc7;m$yvCf7tUvucO_JNu4x7qbrcY~Q5@9}7|9tSfI+-CP-
z{R3tS-eFf{?d$@Xu<t#a2I~?qlko?SKI<E>0>1Cu{;a#eq6gn_XtVAIGe5rJP-i~{
zV(LGce(?jF@buWb>;kOMKqAv8KHxE6{R(Ev{^0gvZRiFW@7TnoFumsow*c!3us;|6
z;MQgB1$!g*9=ieSE3oLshddUn_rT2a_t<S&FM*kY_u2JW8^LNH{^HSRoe5^X`^lZc
zdJ$~+!~5(utn0x{$HzQYtc$?R#0Tugth>NWg)eNf({+Ax3$Q*1^BsS4D@^Bl!Xv=i
z)3f;Lj%g3swOBucW%M7i>#;U~1gAGX;jv_017<FG$Zo;91I)bpkX@7YD45y!hg+5P
zaxchx7vFHHv%cs9F%uuLtFX@N2QdY|v1zgPgB3V@W7B2b1!gAx<yK*R4mM%qKORli
z*$~lZJj$#`!ORDLxfNMggH4$5m|cZ+JD92ek6V%TI@k)qkL+r!SHLDr{LZGv+6z{2
z@g0{sYXg{>_=H`R^(dIh_@7&i^#|Bo#!e=&>Hj{m3$V6;jd}QlU5oVvSe3w2c14aC
zAXWOS9i}Tj;t-wQ@QGc3bv;PoG)7)k*1aIs^!=aMm06oX>ZS*N;4)-A1rnW_$fM2r
z1<abrqs%%1#G3wqkyo2_E|^)^!mPl018k4{FE$0%wP5}4KeJ0t|N4^0g7r68Y6BCm
z7VE?bpm0lk#bd{M1<X|Z#AU#`U?ND=@i&_;>ozd+;CBvV*254cGp`xzLojpVS9Sx|
zhhS}nEWAdn@4%vt%se`*zroClKRC2l+b4kxTgc3#%Q^?l?El8D#kvB_O#I2A&$<=N
zJn)iTlXW-PFoo~z`mD#nqK<EQ^jI&0nIFG!>9RfmGx`3p$xoMI<q=?g2j&~H^60bv
z0W%eUuxqh)PX<{T@Pl22btag3?jM`t^m`x;%fS5gKiKtHcY>K4UbE}4UIsHCzGk;%
zy$@yv{$w{{e+OdfpPc^iKbzEaf$v-btbafv)Bm&an6P$&n{p4|^Jucp0y96nVb^AT
z5AncTc1_mhV9|zO?2fFH!J%Qu$*acN4rYG*#jeHr8>03%yX15aUS3Oqx_rA?+k7*1
z#Zzts-MXCFw0$BkuN5OR!&8CjQM|nB0vmpMSMK|*ZK|<BN-N=5`Bs?xvzF-xcd;n6
zZ}`O1zTp#Z`-V?^?HfMvw{Q3)(7xf5VEcwoLhTzq3Ab<fB+|a&lW6;fPh#yGK8d$)
z_$1N3;ge+hhEG!M8$L<5Z}=qBzTuN>`-V?)?HfMHw{Q3aGE=dA!zZQo4WE?TH+)iQ
z-|$JbeZwcU_6?uZ+c$jDXy5Qjvwg!St@aI{wA(j)(rMrDNw<B&C%yI!pY+=|d@^X?
z@X4@!!zZKm4WEqLH+(W_-|)$_eZwcS_6?uR+c$i&Xy5S3vVFrRtM(0_tlKwyvT5J&
z$+msNC%g6ypX}Q=d~#^t@X4`#!zZWq4WFFbH+*tw-|)$`eZwcW_6?uh+c$jj*uLSD
zr@6lhq5h7+EQU4HA9AvZZdY*f%H<S5@4ZaFC@YzV(My>w?c-ICRjtBy{$-4UBHM2#
zc(Gl;(6{}gf%iRb){}pqzuhtYqP@4O!&MMdUxl%!D7CmWr=(afDKn2j;PtXl_VX(q
zZuFUS?BMy^EAL+es|sXh5ZGkUuIsTxX=cufX*EXPo*$<-mK!e7?tb=0U{#CK;VRyM
z85`gH?0W@P|ImY(LEv`F#)I+e-jwXxDI31<a_6GyjuA|y60NB#zttZ2W9T1xQhv(0
zsf%8MHLMbzE+`}!X6JF!ch7~%9hYlf-kW7xmX`xDZjAslgFu?WrtH8be^qON<^GKe
zy0?LBsBXCOesAF_`3s?wx3GVEH$AY3Y4Y^_Hr@hM^{8V3ld9qIyN!15eogqC5PN5`
z1bc<VZLqulSuryRgtp7Dr8lj+bTIzHHRWaDM?n4Zf9u-=1*O^p1*O{q1!dX;1!da<
z1?AcU1?AfV1r^!@1r^%^1(n(Z1(ml43aX?%pKf3jmbl&bk3mKJc7GMG`@Gv%O%2l&
F002bhBkTYG

diff --git a/.gradle/6.8/executionHistory/executionHistory.lock b/.gradle/6.8/executionHistory/executionHistory.lock
index adf98ccd5eefe6617ce22f81a8d9f8a0fe002364..62dfc85bc4b89872cb2ad3e1aefa24693522d8a8 100644
GIT binary patch
literal 17
VcmZQp+O{L7ZHdZl1~B0H4FEJ81uy^r

literal 17
VcmZQp+O{L7ZHdZl1~A~c1pqVq1rGoK

diff --git a/.gradle/6.8/fileHashes/fileHashes.bin b/.gradle/6.8/fileHashes/fileHashes.bin
index 7627d32a8fcdbf45ec7f7debb787d6acca704950..9f57622cbb1b697da871e95db7550246ecbf3a49 100644
GIT binary patch
delta 4661
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
X3+J&3t6)`hiW%C}_ts-zV9)~qK3`O4

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

diff --git a/.gradle/6.8/fileHashes/fileHashes.lock b/.gradle/6.8/fileHashes/fileHashes.lock
index d3eec9ad5c561fc0e7be5935ac780bf539cd8b22..35fd05debb4ecdeaaeff59014933f889ad7461f5 100644
GIT binary patch
literal 17
WcmZP;t>XHyYn^sA0|+pFWdQ&!ngo>q

literal 17
WcmZP;t>XHyYn^sA0|+p_T?_y&DFrM5

diff --git a/.gradle/6.8/javaCompile/classAnalysis.bin b/.gradle/6.8/javaCompile/classAnalysis.bin
index 62ef4e3ad5de2b867f612afe495c7f08db9eb6e5..c6b7537a9c2b40e457579d1cb996ec4fe7e081f4 100644
GIT binary patch
delta 104
zcmX^1&tqqkXG05P3sVbo3rh=Y3tJ0&3r7oQ3s(zw3(po_*I$hK+ueTg-sI%(c@kH#
z!}bCL2ngA`Z5LzV>lR|H+^9H1czQx3FH3uv7GHaq7Jqw~mOy)$mf-d<Eujx0+Y_vX
HJ~ILUTm2$Y

delta 86
zcmdnl<az9$M?(u^3sVbo3rh=Y3tJ0&3r7oQ3s(zw3(po_*I$f!+ueTg-sGGtXIZg*
rJqsU~5M$y-#SOyK6B>D0+QYQ?+QYQ?+rzX3+QYO2w})v7eGmZvDhwRK

diff --git a/.gradle/6.8/javaCompile/javaCompile.lock b/.gradle/6.8/javaCompile/javaCompile.lock
index c304b9ac7c9960e869501e18bc24b8197e700e65..86eafb0daf0c66271f2ef0815673cc0b4ff1e76c 100644
GIT binary patch
literal 17
UcmZS9_jn)L_pnKx0SpB40WaJHP5=M^

literal 17
UcmZS9_jn)L_pnKx0Sp9u057=&D*ylh

diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index c57f4cdfb03a44607efd70d7e772d9d4b84e777c..32df1e0d0b372ba2045dd4f4044f9b0a6c0ac778 100644
GIT binary patch
literal 17
UcmZRMRkTpz>bjrL00zQN03bL66951J

literal 17
UcmZRMRkTpz>bjrL00zQ503ZSa-2eap

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/HttpURLConnectionExample.class b/build/classes/java/main/de/tudresden/inf/st/openapi/HttpURLConnectionExample.class
new file mode 100644
index 0000000000000000000000000000000000000000..8b5a6bab51ac3826f49a716f9998d3edd65ac783
GIT binary patch
literal 3235
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
If-`*_0AYOxVE_OC

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/OpenAPIMain.class b/build/classes/java/main/de/tudresden/inf/st/openapi/OpenAPIMain.class
index 935127c238b8964ca08444c965ddc6e250a779ac..7639704adf63f312b64b0adf72af6678cc78d7ac 100644
GIT binary patch
delta 21
dcmZ1~u~cG11~;cO!&wFwhD!|YlMA`G002tl2G;-p

delta 21
dcmZ1~u~cG11~;c8!&wF=hD!{tlMA`G002s^2GIZj

diff --git a/build/classes/java/test/openapi/OpenAPIMain_test.class b/build/classes/java/test/openapi/OpenAPIMain_test.class
index fcf5409409bd4bf1659df1fc43a1435f4c278ae0..29ffda4416639b46e049b00d3c4e21e888615e05 100644
GIT binary patch
delta 21
ccmeyY_E~MiUm?yMhGvF5hII@Dli7rG0b!d5j{pDw

delta 21
ccmeyY_E~MiUm?yshGvEWhII@@li7rG0b$Vxl>h($

diff --git a/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html b/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html
index 105d4c43..76ceafc0 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">11.669s</div>
+<div class="counter">21.339s</div>
 <p>duration</p>
 </div>
 </td>
@@ -79,7 +79,7 @@
 </thead>
 <tr>
 <td class="success">test()</td>
-<td class="success">11.669s</td>
+<td class="success">21.339s</td>
 <td class="success">passed</td>
 </tr>
 </table>
@@ -199,7 +199,7 @@ Loading expression DSL file 'uspto.json'.
 <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. 29. 오전 2:06:22</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 8. 31. 오후 3:42:40</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html
index a7423a54..6e5070e8 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">11.669s</div>
+<div class="counter">21.339s</div>
 <p>duration</p>
 </div>
 </td>
@@ -85,7 +85,7 @@
 <td>1</td>
 <td>0</td>
 <td>0</td>
-<td>11.669s</td>
+<td>21.339s</td>
 <td class="success">100%</td>
 </tr>
 </tbody>
@@ -112,7 +112,7 @@
 <td>1</td>
 <td>0</td>
 <td>0</td>
-<td>11.669s</td>
+<td>21.339s</td>
 <td class="success">100%</td>
 </tr>
 </tbody>
@@ -126,7 +126,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. 29. 오전 2:06:22</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 8. 31. 오후 3:42:40</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/packages/openapi.html b/build/reports/tests/test/packages/openapi.html
index e83a32ec..de5f9987 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">11.669s</div>
+<div class="counter">21.339s</div>
 <p>duration</p>
 </div>
 </td>
@@ -83,7 +83,7 @@
 <td>1</td>
 <td>0</td>
 <td>0</td>
-<td>11.669s</td>
+<td>21.339s</td>
 <td class="success">100%</td>
 </tr>
 </table>
@@ -96,7 +96,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. 29. 오전 2:06:22</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 8. 31. 오후 3:42:40</p>
 </div>
 </div>
 </body>
diff --git a/build/resources/main/petstore-v2.yaml b/build/resources/main/petstore-v2.yaml
new file mode 100644
index 00000000..9184e9c8
--- /dev/null
+++ b/build/resources/main/petstore-v2.yaml
@@ -0,0 +1,738 @@
+openapi: 3.0.0
+servers:
+  - url: 'http://petstore.swagger.io/v2'
+info:
+  description: >-
+    This is a sample server Petstore server. For this sample, you can use the api key
+    `special-key` to test the authorization filters.
+  version: 1.0.0
+  title: OpenAPI Petstore
+  license:
+    name: Apache-2.0
+    url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
+tags:
+  - name: pet
+    description: Everything about your Pets
+  - name: store
+    description: Access to Petstore orders
+  - name: user
+    description: Operations about user
+paths:
+  /pet:
+    post:
+      tags:
+        - pet
+      summary: Add a new pet to the store
+      description: ''
+      operationId: addPet
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/Pet'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Pet'
+        '405':
+          description: Invalid input
+      security:
+        - petstore_auth:
+            - 'write:pets'
+            - 'read:pets'
+      requestBody:
+        $ref: '#/components/requestBodies/Pet'
+    put:
+      tags:
+        - pet
+      summary: Update an existing pet
+      description: ''
+      operationId: updatePet
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/Pet'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Pet'
+        '400':
+          description: Invalid ID supplied
+        '404':
+          description: Pet not found
+        '405':
+          description: Validation exception
+      security:
+        - petstore_auth:
+            - 'write:pets'
+            - 'read:pets'
+      requestBody:
+        $ref: '#/components/requestBodies/Pet'
+  /pet/findByStatus:
+    get:
+      tags:
+        - pet
+      summary: Finds Pets by status
+      description: Multiple status values can be provided with comma separated strings
+      operationId: findPetsByStatus
+      parameters:
+        - name: status
+          in: query
+          description: Status values that need to be considered for filter
+          required: true
+          style: form
+          explode: false
+          deprecated: true
+          schema:
+            type: array
+            items:
+              type: string
+              enum:
+                - available
+                - pending
+                - sold
+              default: available
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Pet'
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Pet'
+        '400':
+          description: Invalid status value
+      security:
+        - petstore_auth:
+            - 'read:pets'
+  /pet/findByTags:
+    get:
+      tags:
+        - pet
+      summary: Finds Pets by tags
+      description: >-
+        Multiple tags can be provided with comma separated strings. Use tag1,
+        tag2, tag3 for testing.
+      operationId: findPetsByTags
+      parameters:
+        - name: tags
+          in: query
+          description: Tags to filter by
+          required: true
+          style: form
+          explode: false
+          schema:
+            type: array
+            items:
+              type: string
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Pet'
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Pet'
+        '400':
+          description: Invalid tag value
+      security:
+        - petstore_auth:
+            - 'read:pets'
+      deprecated: true
+  '/pet/{petId}':
+    get:
+      tags:
+        - pet
+      summary: Find pet by ID
+      description: Returns a single pet
+      operationId: getPetById
+      parameters:
+        - name: petId
+          in: path
+          description: ID of pet to return
+          required: true
+          schema:
+            type: integer
+            format: int64
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/Pet'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Pet'
+        '400':
+          description: Invalid ID supplied
+        '404':
+          description: Pet not found
+      security:
+        - api_key: []
+    post:
+      tags:
+        - pet
+      summary: Updates a pet in the store with form data
+      description: ''
+      operationId: updatePetWithForm
+      parameters:
+        - name: petId
+          in: path
+          description: ID of pet that needs to be updated
+          required: true
+          schema:
+            type: integer
+            format: int64
+      responses:
+        '405':
+          description: Invalid input
+      security:
+        - petstore_auth:
+            - 'write:pets'
+            - 'read:pets'
+      requestBody:
+        content:
+          application/x-www-form-urlencoded:
+            schema:
+              type: object
+              properties:
+                name:
+                  description: Updated name of the pet
+                  type: string
+                status:
+                  description: Updated status of the pet
+                  type: string
+    delete:
+      tags:
+        - pet
+      summary: Deletes a pet
+      description: ''
+      operationId: deletePet
+      parameters:
+        - name: api_key
+          in: header
+          required: false
+          schema:
+            type: string
+        - name: petId
+          in: path
+          description: Pet id to delete
+          required: true
+          schema:
+            type: integer
+            format: int64
+      responses:
+        '400':
+          description: Invalid pet value
+      security:
+        - petstore_auth:
+            - 'write:pets'
+            - 'read:pets'
+  '/pet/{petId}/uploadImage':
+    post:
+      tags:
+        - pet
+      summary: uploads an image
+      description: ''
+      operationId: uploadFile
+      parameters:
+        - name: petId
+          in: path
+          description: ID of pet to update
+          required: true
+          schema:
+            type: integer
+            format: int64
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ApiResponse'
+      security:
+        - petstore_auth:
+            - 'write:pets'
+            - 'read:pets'
+      requestBody:
+        content:
+          multipart/form-data:
+            schema:
+              type: object
+              properties:
+                additionalMetadata:
+                  description: Additional data to pass to server
+                  type: string
+                file:
+                  description: file to upload
+                  type: string
+                  format: binary
+  /store/inventory:
+    get:
+      tags:
+        - store
+      summary: Returns pet inventories by status
+      description: Returns a map of status codes to quantities
+      operationId: getInventory
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/json:
+              schema:
+                type: object
+                additionalProperties:
+                  type: integer
+                  format: int32
+      security:
+        - api_key: []
+  /store/order:
+    post:
+      tags:
+        - store
+      summary: Place an order for a pet
+      description: ''
+      operationId: placeOrder
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/Order'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Order'
+        '400':
+          description: Invalid Order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Order'
+        description: order placed for purchasing the pet
+        required: true
+  '/store/order/{orderId}':
+    get:
+      tags:
+        - store
+      summary: Find purchase order by ID
+      description: >-
+        For valid response try integer IDs with value <= 5 or > 10. Other values
+        will generated exceptions
+      operationId: getOrderById
+      parameters:
+        - name: orderId
+          in: path
+          description: ID of pet that needs to be fetched
+          required: true
+          schema:
+            type: integer
+            format: int64
+            minimum: 1
+            maximum: 5
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/Order'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Order'
+        '400':
+          description: Invalid ID supplied
+        '404':
+          description: Order not found
+    delete:
+      tags:
+        - store
+      summary: Delete purchase order by ID
+      description: >-
+        For valid response try integer IDs with value < 1000. Anything above
+        1000 or nonintegers will generate API errors
+      operationId: deleteOrder
+      parameters:
+        - name: orderId
+          in: path
+          description: ID of the order that needs to be deleted
+          required: true
+          schema:
+            type: string
+      responses:
+        '400':
+          description: Invalid ID supplied
+        '404':
+          description: Order not found
+  /user:
+    post:
+      tags:
+        - user
+      summary: Create user
+      description: This can only be done by the logged in user.
+      operationId: createUser
+      responses:
+        default:
+          description: successful operation
+      security:
+        - api_key: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/User'
+        description: Created user object
+        required: true
+  /user/createWithArray:
+    post:
+      tags:
+        - user
+      summary: Creates list of users with given input array
+      description: ''
+      operationId: createUsersWithArrayInput
+      responses:
+        default:
+          description: successful operation
+      security:
+        - api_key: []
+      requestBody:
+        $ref: '#/components/requestBodies/UserArray'
+  /user/createWithList:
+    post:
+      tags:
+        - user
+      summary: Creates list of users with given input array
+      description: ''
+      operationId: createUsersWithListInput
+      responses:
+        default:
+          description: successful operation
+      security:
+        - api_key: []
+      requestBody:
+        $ref: '#/components/requestBodies/UserArray'
+  /user/login:
+    get:
+      tags:
+        - user
+      summary: Logs user into the system
+      description: ''
+      operationId: loginUser
+      parameters:
+        - name: username
+          in: query
+          description: The user name for login
+          required: true
+          schema:
+            type: string
+            pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$'
+        - name: password
+          in: query
+          description: The password for login in clear text
+          required: true
+          schema:
+            type: string
+      responses:
+        '200':
+          description: successful operation
+          headers:
+            Set-Cookie:
+              description: >-
+                Cookie authentication key for use with the `api_key`
+                apiKey authentication.
+              schema:
+                type: string
+                example: AUTH_KEY=abcde12345; Path=/; HttpOnly
+            X-Rate-Limit:
+              description: calls per hour allowed by the user
+              schema:
+                type: integer
+                format: int32
+            X-Expires-After:
+              description: date in UTC when token expires
+              schema:
+                type: string
+                format: date-time
+          content:
+            application/xml:
+              schema:
+                type: string
+            application/json:
+              schema:
+                type: string
+        '400':
+          description: Invalid username/password supplied
+  /user/logout:
+    get:
+      tags:
+        - user
+      summary: Logs out current logged in user session
+      description: ''
+      operationId: logoutUser
+      responses:
+        default:
+          description: successful operation
+      security:
+        - api_key: []
+  '/user/{username}':
+    get:
+      tags:
+        - user
+      summary: Get user by user name
+      description: ''
+      operationId: getUserByName
+      parameters:
+        - name: username
+          in: path
+          description: The name that needs to be fetched. Use user1 for testing.
+          required: true
+          schema:
+            type: string
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/User'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/User'
+        '400':
+          description: Invalid username supplied
+        '404':
+          description: User not found
+    put:
+      tags:
+        - user
+      summary: Updated user
+      description: This can only be done by the logged in user.
+      operationId: updateUser
+      parameters:
+        - name: username
+          in: path
+          description: name that need to be deleted
+          required: true
+          schema:
+            type: string
+      responses:
+        '400':
+          description: Invalid user supplied
+        '404':
+          description: User not found
+      security:
+        - api_key: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/User'
+        description: Updated user object
+        required: true
+    delete:
+      tags:
+        - user
+      summary: Delete user
+      description: This can only be done by the logged in user.
+      operationId: deleteUser
+      parameters:
+        - name: username
+          in: path
+          description: The name that needs to be deleted
+          required: true
+          schema:
+            type: string
+      responses:
+        '400':
+          description: Invalid username supplied
+        '404':
+          description: User not found
+      security:
+        - api_key: []
+externalDocs:
+  description: Find out more about Swagger
+  url: 'http://swagger.io'
+components:
+  requestBodies:
+    UserArray:
+      content:
+        application/json:
+          schema:
+            type: array
+            items:
+              $ref: '#/components/schemas/User'
+      description: List of user object
+      required: true
+    Pet:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Pet'
+        application/xml:
+          schema:
+            $ref: '#/components/schemas/Pet'
+      description: Pet object that needs to be added to the store
+      required: true
+  securitySchemes:
+    petstore_auth:
+      type: oauth2
+      flows:
+        implicit:
+          authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog'
+          scopes:
+            'write:pets': modify pets in your account
+            'read:pets': read your pets
+    api_key:
+      type: apiKey
+      name: api_key
+      in: header
+  schemas:
+    Order:
+      title: Pet Order
+      description: An order for a pets from the pet store
+      type: object
+      properties:
+        id:
+          type: integer
+          format: int64
+        petId:
+          type: integer
+          format: int64
+        quantity:
+          type: integer
+          format: int32
+        shipDate:
+          type: string
+          format: date-time
+        status:
+          type: string
+          description: Order Status
+          enum:
+            - placed
+            - approved
+            - delivered
+        complete:
+          type: boolean
+          default: false
+      xml:
+        name: Order
+    Category:
+      title: Pet category
+      description: A category for a pet
+      type: object
+      properties:
+        id:
+          type: integer
+          format: int64
+        name:
+          type: string
+          pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$'
+      xml:
+        name: Category
+    User:
+      title: a User
+      description: A User who is purchasing from the pet store
+      type: object
+      properties:
+        id:
+          type: integer
+          format: int64
+        username:
+          type: string
+        firstName:
+          type: string
+        lastName:
+          type: string
+        email:
+          type: string
+        password:
+          type: string
+        phone:
+          type: string
+        userStatus:
+          type: integer
+          format: int32
+          description: User Status
+      xml:
+        name: User
+    Tag:
+      title: Pet Tag
+      description: A tag for a pet
+      type: object
+      properties:
+        id:
+          type: integer
+          format: int64
+        name:
+          type: string
+      xml:
+        name: Tag
+    Pet:
+      title: a Pet
+      description: A pet for sale in the pet store
+      type: object
+      required:
+        - name
+        - photoUrls
+      properties:
+        id:
+          type: integer
+          format: int64
+        category:
+          $ref: '#/components/schemas/Category'
+        name:
+          type: string
+          example: doggie
+        photoUrls:
+          type: array
+          xml:
+            name: photoUrl
+            wrapped: true
+          items:
+            type: string
+        tags:
+          type: array
+          xml:
+            name: tag
+            wrapped: true
+          items:
+            $ref: '#/components/schemas/Tag'
+        status:
+          type: string
+          description: pet status in the store
+          deprecated: true
+          enum:
+            - available
+            - pending
+            - sold
+      xml:
+        name: Pet
+    ApiResponse:
+      title: An uploaded response
+      description: Describes the result of uploading an image resource
+      type: object
+      properties:
+        code:
+          type: integer
+          format: int32
+        type:
+          type: string
+        message:
+          type: string
diff --git a/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml b/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
index b274e3c0..03b9f211 100644
--- a/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
+++ b/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="openapi.OpenAPIMain_test" tests="1" skipped="0" failures="0" errors="0" timestamp="2021-08-28T17:06:10" hostname="DESKTOP-RAH69DT" time="11.669">
+<testsuite name="openapi.OpenAPIMain_test" tests="1" skipped="0" failures="0" errors="0" timestamp="2021-08-31T06:42:18" hostname="DESKTOP-RAH69DT" time="21.339">
   <properties/>
-  <testcase name="test()" classname="openapi.OpenAPIMain_test" time="11.669"/>
+  <testcase name="test()" classname="openapi.OpenAPIMain_test" time="21.339"/>
   <system-out><![CDATA[100
 Loading expression DSL file '1password.com-events-1.0.0.json'.
 Loading expression DSL file '1password.local-connect-1.3.0.json'.
diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin
index 1c65921d243caf39db375d7f986fd5487250d727..d16a5ed5807fe1b8415f089399f781b5c4eac081 100644
GIT binary patch
delta 38
pcmWFxnqa6n>*MaljEwCisl_E4nox@2_A*8W2FB`HpZNYU0016C4mSV*

delta 37
ncmWFvoM5QXyYnIgBV&6>YH^8%CX`~B8qL7KSlzqx-&6(w^@a@-

diff --git a/pom.xml b/pom.xml
index eadf2979..0052e677 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,6 +49,12 @@
             <artifactId>jackson-dataformat-yaml</artifactId>
             <version>2.1.2</version>
         </dependency>
+        <dependency>
+            <groupId>org.openapi4j</groupId>
+            <artifactId>openapi-operation-validator</artifactId>
+            <version>1.0.7</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
     <properties>
         <maven.compiler.source>1.8</maven.compiler.source>
diff --git a/src/main/java/de/tudresden/inf/st/openapi/HttpURLConnectionExample.java b/src/main/java/de/tudresden/inf/st/openapi/HttpURLConnectionExample.java
new file mode 100644
index 00000000..742084b7
--- /dev/null
+++ b/src/main/java/de/tudresden/inf/st/openapi/HttpURLConnectionExample.java
@@ -0,0 +1,81 @@
+package de.tudresden.inf.st.openapi;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+import javax.net.ssl.HttpsURLConnection;
+
+public class HttpURLConnectionExample {
+
+    private final String USER_AGENT = "Mozilla/5.0";
+
+    public static void main(String[] args) throws Exception {
+
+        HttpURLConnectionExample http = new HttpURLConnectionExample();
+
+        System.out.println("Data call with GET");
+        http.sendGet("https://www.naver.com");
+
+        System.out.println("Data call with POST");
+        String urlParameters = "sn=C02G8416DRJM&cn=&locale=&caller=&num=12345";
+        http.sendPost("https://www.google.co.kr/", urlParameters);
+    }
+
+    // HTTP GET request
+    private void sendGet(String targetUrl) throws Exception {
+
+        URL url = new URL(targetUrl);
+        HttpURLConnection con = (HttpURLConnection) url.openConnection();
+
+        con.setRequestMethod("GET"); // optional default is GET
+        con.setRequestProperty("User-Agent", USER_AGENT); // add request header
+
+        int responseCode = con.getResponseCode();
+        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
+        String inputLine;
+        StringBuffer response = new StringBuffer();
+
+        while ((inputLine = in.readLine()) != null) {
+            response.append(inputLine);
+        }
+        in.close();
+
+        // print result
+        System.out.println("HTTP status code : " + responseCode);
+        //System.out.println("HTTP body : " + response.toString());
+    }
+
+    // HTTP POST request
+    private void sendPost(String targetUrl, String parameters) throws Exception {
+
+        URL url = new URL(targetUrl);
+        HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
+
+        con.setRequestMethod("POST"); // HTTP POST
+        con.setRequestProperty("User-Agent", USER_AGENT);
+        con.setDoOutput(true); // POST
+        // Send post request
+        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
+        wr.writeBytes(parameters);
+        wr.flush();
+        wr.close();
+
+        int responseCode = con.getResponseCode();
+        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
+        String inputLine;
+        StringBuffer response = new StringBuffer();
+
+        while ((inputLine = in.readLine()) != null) {
+            response.append(inputLine);
+        }
+        in.close();
+
+        // print result
+        System.out.println("HTTP status code : " + responseCode);
+        //System.out.println("HTTP body : " + response.toString());
+
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java b/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java
index 95114e34..91eeecb7 100644
--- a/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java
+++ b/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java
@@ -62,6 +62,8 @@ public class OpenAPIMain {
         //writer.write(api3.toNode().toPrettyString());
         //writer.close();
 
+
+
         if (args.length > 0) {
             fileName = args[0];
         }
diff --git a/src/main/resources/petstore-v2.yaml b/src/main/resources/petstore-v2.yaml
new file mode 100644
index 00000000..9184e9c8
--- /dev/null
+++ b/src/main/resources/petstore-v2.yaml
@@ -0,0 +1,738 @@
+openapi: 3.0.0
+servers:
+  - url: 'http://petstore.swagger.io/v2'
+info:
+  description: >-
+    This is a sample server Petstore server. For this sample, you can use the api key
+    `special-key` to test the authorization filters.
+  version: 1.0.0
+  title: OpenAPI Petstore
+  license:
+    name: Apache-2.0
+    url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
+tags:
+  - name: pet
+    description: Everything about your Pets
+  - name: store
+    description: Access to Petstore orders
+  - name: user
+    description: Operations about user
+paths:
+  /pet:
+    post:
+      tags:
+        - pet
+      summary: Add a new pet to the store
+      description: ''
+      operationId: addPet
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/Pet'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Pet'
+        '405':
+          description: Invalid input
+      security:
+        - petstore_auth:
+            - 'write:pets'
+            - 'read:pets'
+      requestBody:
+        $ref: '#/components/requestBodies/Pet'
+    put:
+      tags:
+        - pet
+      summary: Update an existing pet
+      description: ''
+      operationId: updatePet
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/Pet'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Pet'
+        '400':
+          description: Invalid ID supplied
+        '404':
+          description: Pet not found
+        '405':
+          description: Validation exception
+      security:
+        - petstore_auth:
+            - 'write:pets'
+            - 'read:pets'
+      requestBody:
+        $ref: '#/components/requestBodies/Pet'
+  /pet/findByStatus:
+    get:
+      tags:
+        - pet
+      summary: Finds Pets by status
+      description: Multiple status values can be provided with comma separated strings
+      operationId: findPetsByStatus
+      parameters:
+        - name: status
+          in: query
+          description: Status values that need to be considered for filter
+          required: true
+          style: form
+          explode: false
+          deprecated: true
+          schema:
+            type: array
+            items:
+              type: string
+              enum:
+                - available
+                - pending
+                - sold
+              default: available
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Pet'
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Pet'
+        '400':
+          description: Invalid status value
+      security:
+        - petstore_auth:
+            - 'read:pets'
+  /pet/findByTags:
+    get:
+      tags:
+        - pet
+      summary: Finds Pets by tags
+      description: >-
+        Multiple tags can be provided with comma separated strings. Use tag1,
+        tag2, tag3 for testing.
+      operationId: findPetsByTags
+      parameters:
+        - name: tags
+          in: query
+          description: Tags to filter by
+          required: true
+          style: form
+          explode: false
+          schema:
+            type: array
+            items:
+              type: string
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Pet'
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/Pet'
+        '400':
+          description: Invalid tag value
+      security:
+        - petstore_auth:
+            - 'read:pets'
+      deprecated: true
+  '/pet/{petId}':
+    get:
+      tags:
+        - pet
+      summary: Find pet by ID
+      description: Returns a single pet
+      operationId: getPetById
+      parameters:
+        - name: petId
+          in: path
+          description: ID of pet to return
+          required: true
+          schema:
+            type: integer
+            format: int64
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/Pet'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Pet'
+        '400':
+          description: Invalid ID supplied
+        '404':
+          description: Pet not found
+      security:
+        - api_key: []
+    post:
+      tags:
+        - pet
+      summary: Updates a pet in the store with form data
+      description: ''
+      operationId: updatePetWithForm
+      parameters:
+        - name: petId
+          in: path
+          description: ID of pet that needs to be updated
+          required: true
+          schema:
+            type: integer
+            format: int64
+      responses:
+        '405':
+          description: Invalid input
+      security:
+        - petstore_auth:
+            - 'write:pets'
+            - 'read:pets'
+      requestBody:
+        content:
+          application/x-www-form-urlencoded:
+            schema:
+              type: object
+              properties:
+                name:
+                  description: Updated name of the pet
+                  type: string
+                status:
+                  description: Updated status of the pet
+                  type: string
+    delete:
+      tags:
+        - pet
+      summary: Deletes a pet
+      description: ''
+      operationId: deletePet
+      parameters:
+        - name: api_key
+          in: header
+          required: false
+          schema:
+            type: string
+        - name: petId
+          in: path
+          description: Pet id to delete
+          required: true
+          schema:
+            type: integer
+            format: int64
+      responses:
+        '400':
+          description: Invalid pet value
+      security:
+        - petstore_auth:
+            - 'write:pets'
+            - 'read:pets'
+  '/pet/{petId}/uploadImage':
+    post:
+      tags:
+        - pet
+      summary: uploads an image
+      description: ''
+      operationId: uploadFile
+      parameters:
+        - name: petId
+          in: path
+          description: ID of pet to update
+          required: true
+          schema:
+            type: integer
+            format: int64
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ApiResponse'
+      security:
+        - petstore_auth:
+            - 'write:pets'
+            - 'read:pets'
+      requestBody:
+        content:
+          multipart/form-data:
+            schema:
+              type: object
+              properties:
+                additionalMetadata:
+                  description: Additional data to pass to server
+                  type: string
+                file:
+                  description: file to upload
+                  type: string
+                  format: binary
+  /store/inventory:
+    get:
+      tags:
+        - store
+      summary: Returns pet inventories by status
+      description: Returns a map of status codes to quantities
+      operationId: getInventory
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/json:
+              schema:
+                type: object
+                additionalProperties:
+                  type: integer
+                  format: int32
+      security:
+        - api_key: []
+  /store/order:
+    post:
+      tags:
+        - store
+      summary: Place an order for a pet
+      description: ''
+      operationId: placeOrder
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/Order'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Order'
+        '400':
+          description: Invalid Order
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/Order'
+        description: order placed for purchasing the pet
+        required: true
+  '/store/order/{orderId}':
+    get:
+      tags:
+        - store
+      summary: Find purchase order by ID
+      description: >-
+        For valid response try integer IDs with value <= 5 or > 10. Other values
+        will generated exceptions
+      operationId: getOrderById
+      parameters:
+        - name: orderId
+          in: path
+          description: ID of pet that needs to be fetched
+          required: true
+          schema:
+            type: integer
+            format: int64
+            minimum: 1
+            maximum: 5
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/Order'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Order'
+        '400':
+          description: Invalid ID supplied
+        '404':
+          description: Order not found
+    delete:
+      tags:
+        - store
+      summary: Delete purchase order by ID
+      description: >-
+        For valid response try integer IDs with value < 1000. Anything above
+        1000 or nonintegers will generate API errors
+      operationId: deleteOrder
+      parameters:
+        - name: orderId
+          in: path
+          description: ID of the order that needs to be deleted
+          required: true
+          schema:
+            type: string
+      responses:
+        '400':
+          description: Invalid ID supplied
+        '404':
+          description: Order not found
+  /user:
+    post:
+      tags:
+        - user
+      summary: Create user
+      description: This can only be done by the logged in user.
+      operationId: createUser
+      responses:
+        default:
+          description: successful operation
+      security:
+        - api_key: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/User'
+        description: Created user object
+        required: true
+  /user/createWithArray:
+    post:
+      tags:
+        - user
+      summary: Creates list of users with given input array
+      description: ''
+      operationId: createUsersWithArrayInput
+      responses:
+        default:
+          description: successful operation
+      security:
+        - api_key: []
+      requestBody:
+        $ref: '#/components/requestBodies/UserArray'
+  /user/createWithList:
+    post:
+      tags:
+        - user
+      summary: Creates list of users with given input array
+      description: ''
+      operationId: createUsersWithListInput
+      responses:
+        default:
+          description: successful operation
+      security:
+        - api_key: []
+      requestBody:
+        $ref: '#/components/requestBodies/UserArray'
+  /user/login:
+    get:
+      tags:
+        - user
+      summary: Logs user into the system
+      description: ''
+      operationId: loginUser
+      parameters:
+        - name: username
+          in: query
+          description: The user name for login
+          required: true
+          schema:
+            type: string
+            pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$'
+        - name: password
+          in: query
+          description: The password for login in clear text
+          required: true
+          schema:
+            type: string
+      responses:
+        '200':
+          description: successful operation
+          headers:
+            Set-Cookie:
+              description: >-
+                Cookie authentication key for use with the `api_key`
+                apiKey authentication.
+              schema:
+                type: string
+                example: AUTH_KEY=abcde12345; Path=/; HttpOnly
+            X-Rate-Limit:
+              description: calls per hour allowed by the user
+              schema:
+                type: integer
+                format: int32
+            X-Expires-After:
+              description: date in UTC when token expires
+              schema:
+                type: string
+                format: date-time
+          content:
+            application/xml:
+              schema:
+                type: string
+            application/json:
+              schema:
+                type: string
+        '400':
+          description: Invalid username/password supplied
+  /user/logout:
+    get:
+      tags:
+        - user
+      summary: Logs out current logged in user session
+      description: ''
+      operationId: logoutUser
+      responses:
+        default:
+          description: successful operation
+      security:
+        - api_key: []
+  '/user/{username}':
+    get:
+      tags:
+        - user
+      summary: Get user by user name
+      description: ''
+      operationId: getUserByName
+      parameters:
+        - name: username
+          in: path
+          description: The name that needs to be fetched. Use user1 for testing.
+          required: true
+          schema:
+            type: string
+      responses:
+        '200':
+          description: successful operation
+          content:
+            application/xml:
+              schema:
+                $ref: '#/components/schemas/User'
+            application/json:
+              schema:
+                $ref: '#/components/schemas/User'
+        '400':
+          description: Invalid username supplied
+        '404':
+          description: User not found
+    put:
+      tags:
+        - user
+      summary: Updated user
+      description: This can only be done by the logged in user.
+      operationId: updateUser
+      parameters:
+        - name: username
+          in: path
+          description: name that need to be deleted
+          required: true
+          schema:
+            type: string
+      responses:
+        '400':
+          description: Invalid user supplied
+        '404':
+          description: User not found
+      security:
+        - api_key: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/User'
+        description: Updated user object
+        required: true
+    delete:
+      tags:
+        - user
+      summary: Delete user
+      description: This can only be done by the logged in user.
+      operationId: deleteUser
+      parameters:
+        - name: username
+          in: path
+          description: The name that needs to be deleted
+          required: true
+          schema:
+            type: string
+      responses:
+        '400':
+          description: Invalid username supplied
+        '404':
+          description: User not found
+      security:
+        - api_key: []
+externalDocs:
+  description: Find out more about Swagger
+  url: 'http://swagger.io'
+components:
+  requestBodies:
+    UserArray:
+      content:
+        application/json:
+          schema:
+            type: array
+            items:
+              $ref: '#/components/schemas/User'
+      description: List of user object
+      required: true
+    Pet:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Pet'
+        application/xml:
+          schema:
+            $ref: '#/components/schemas/Pet'
+      description: Pet object that needs to be added to the store
+      required: true
+  securitySchemes:
+    petstore_auth:
+      type: oauth2
+      flows:
+        implicit:
+          authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog'
+          scopes:
+            'write:pets': modify pets in your account
+            'read:pets': read your pets
+    api_key:
+      type: apiKey
+      name: api_key
+      in: header
+  schemas:
+    Order:
+      title: Pet Order
+      description: An order for a pets from the pet store
+      type: object
+      properties:
+        id:
+          type: integer
+          format: int64
+        petId:
+          type: integer
+          format: int64
+        quantity:
+          type: integer
+          format: int32
+        shipDate:
+          type: string
+          format: date-time
+        status:
+          type: string
+          description: Order Status
+          enum:
+            - placed
+            - approved
+            - delivered
+        complete:
+          type: boolean
+          default: false
+      xml:
+        name: Order
+    Category:
+      title: Pet category
+      description: A category for a pet
+      type: object
+      properties:
+        id:
+          type: integer
+          format: int64
+        name:
+          type: string
+          pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$'
+      xml:
+        name: Category
+    User:
+      title: a User
+      description: A User who is purchasing from the pet store
+      type: object
+      properties:
+        id:
+          type: integer
+          format: int64
+        username:
+          type: string
+        firstName:
+          type: string
+        lastName:
+          type: string
+        email:
+          type: string
+        password:
+          type: string
+        phone:
+          type: string
+        userStatus:
+          type: integer
+          format: int32
+          description: User Status
+      xml:
+        name: User
+    Tag:
+      title: Pet Tag
+      description: A tag for a pet
+      type: object
+      properties:
+        id:
+          type: integer
+          format: int64
+        name:
+          type: string
+      xml:
+        name: Tag
+    Pet:
+      title: a Pet
+      description: A pet for sale in the pet store
+      type: object
+      required:
+        - name
+        - photoUrls
+      properties:
+        id:
+          type: integer
+          format: int64
+        category:
+          $ref: '#/components/schemas/Category'
+        name:
+          type: string
+          example: doggie
+        photoUrls:
+          type: array
+          xml:
+            name: photoUrl
+            wrapped: true
+          items:
+            type: string
+        tags:
+          type: array
+          xml:
+            name: tag
+            wrapped: true
+          items:
+            $ref: '#/components/schemas/Tag'
+        status:
+          type: string
+          description: pet status in the store
+          deprecated: true
+          enum:
+            - available
+            - pending
+            - sold
+      xml:
+        name: Pet
+    ApiResponse:
+      title: An uploaded response
+      description: Describes the result of uploading an image resource
+      type: object
+      properties:
+        code:
+          type: integer
+          format: int32
+        type:
+          type: string
+        message:
+          type: string
-- 
GitLab