From 4acd7462f6d8c16993a00c03ce68aaf495b74c56 Mon Sep 17 00:00:00 2001 From: David Rauh <david.rauh@uba.de> Date: Thu, 13 Jun 2024 13:21:34 +0000 Subject: [PATCH 1/9] cutomize swagger --- docker/Dockerfile-nsi-ws | 3 +- images/logo.png | Bin 0 -> 96385 bytes images/logo.svg | 52 + swagger/ui/custom.css | 28 +- swagger/v1/sdmx-rest.yaml | 2327 ------------------- swagger/v1/swagger-static.json | 3901 -------------------------------- swagger/v2/sdmx-rest.yaml | 820 ------- swagger/v2/swagger-static.json | 3901 -------------------------------- 8 files changed, 70 insertions(+), 10962 deletions(-) create mode 100644 images/logo.png create mode 100644 images/logo.svg delete mode 100644 swagger/v1/sdmx-rest.yaml delete mode 100644 swagger/v1/swagger-static.json delete mode 100644 swagger/v2/sdmx-rest.yaml delete mode 100644 swagger/v2/swagger-static.json diff --git a/docker/Dockerfile-nsi-ws b/docker/Dockerfile-nsi-ws index 790641f..bb207d2 100644 --- a/docker/Dockerfile-nsi-ws +++ b/docker/Dockerfile-nsi-ws @@ -3,7 +3,8 @@ FROM siscc/sdmxri-nsi-maapi:${NSI_IMAGE_TAG} COPY log4net.config /app/config/log4net.config COPY scripts/dotnet-log-filter.sh /app/log-filter.sh -COPY swagger /app/wwwroot/swagger +COPY swagger/ui/custom.css /app/wwwroot/swagger/ui/ +COPY images/* /app/wwwroot/images/ ENV auth__allowAnonymous="true" ENV auth__requireHttps="false" diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..334572a566d9bcf4df774a02891c02391946f3c9 GIT binary patch literal 96385 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%0DT2)!G9Y;<LYJ}D2f2p0DfxG2*w0OOzHZO+SBe! z`4&|7`+D&_B=WZ~|2%0!-bVE^1S!p~3mLs&Y~SV%yqG+ydznBOf`p142`indZSAoV z3nMY=D+-yxmdNW82)_8O9nlZba!;^>Fa8?fxMt`AxA6TdrTGOxn)$-ouVhOB)SlDE zeh&v!t^JTeB`}1$6+HKH+_&d$QVxRn(_h1|aAl)~n+B3(Wu{M5EvilvOq{Y-O$xRs zaA5$?$q0gaBJQhr+bJn&{Rp+^&#F`>WF3AzE`?+=zqnrD;VDck_5zAIavnFFg<CZC z8wS{z8I;oj84`*(75{1cL7g^;I43Za@}XeGbIUnZJeA!aI8~g;N|9%m2$&SyZ33&f zzZyxY`scJKWx<X^N?XVq_xxE1H(D66Awh-s9u2f>3ETRwVn9*<IMC?7--P<=H@rH0 z=sTya=@E_OPJNZJU?xJZA>R|<M*67M0HBfHg2(m%VELyRs(?P!^XDbQn^8&cK+q3h z-yr}=BS6N2J)yj3FG4UN5kv%S|9T5P*j1Lh2HDG<>x0RMufRAVZ#k96XD4a0`9XQr zTOX`9;G~}a8HV_my{p4fnWPS$%_-WTfL6mwiS+Gsx5P(4zguHZaz*yHZXsY=s{eKm zMXw6v!zB8NS2_&!swxJ&=g?5{#HY`r4p?+bony-VxNU1S=3C-_)-gQ@NDev9v4J>& zbH1SUb$Czwsd13E0LFB!?a<UR0Fe;|<bN7{8>sDXPd_vO5#@A%W~tdC+O}P*bDt+) zkGRSK?)9J6aJK!zRis24kK77}lJ8;H-LIBPi|t*_g}43NzL6n4ym#BoqzsuS?0-ia zexnE3VLnndua^{H0RuqmPooM(R&VSy@3`CNWIVXl`cM1krLuRw&%<&MyZ+}D)aj;q zJr4{+CCD=UX-EfOKXU64?#_bJ{ht;F0+dkAM{0tI#K^ym>{OEfDk7Bwn*$-L|J%qy zk&az;bf0?yQdEB$?j7W#o+Gs~xMT$Y=YLutvMYR~_9oDfLY@Dg7f=lu!cb1M;efOv z2zNtu91sk5qkuMbUV1<6m*eS~EgRKK9x+9r-bRq)W4yAzNwnObIQ2gRLWX$C{PLVB z%ELAY#|$C=6i+)j;=Iojnk)vS02~jd$Ff`IkZLs%v~4b#<J1lLT?U(oaHj>h({NG5 zYcN6B;;)!7WAhkw;f5X&0(*au*k<Na&I1tepY;yTTN9EpOai3pYXDsV;meNq=Wr$@ zpW)P+{csVGz_lC2L>}FFY;sWPDCjC48hmZ8(3_B(X(JHrf(7Tc#=~-?=7ub;e;Ypz zOwpTs#2HL#nkxVF0Vr?p$}OKmp<Q6t6x8`{GV11^^DjgsayqdLK7~YqYVTiTe5#9y z%0c8u=Mx2QY5&r3)f2hNQVExcjK2bw6KHQT^}X%t(n|+c7oZ^i=ZT&nPZX~YH}Qbz z7qY)Wu5P=`%z9u|O`oP-=(a7btFC@`kIw6qo6Ah+|Lrphg*yXaK@^J_rTNgw+5uke z?nc}XU_)k@Fe|Dc3jI=lFG8Esttz)fVKuC@<EcUEvBU#b;q%5e=mdXKMEmox{~6(X z+Q8Kkd3&6)-~7><DMnV{1Fo787gViB{$B7lmyq4nDF<ADqkhUC2oM0k!O}x;lmbyW zG3Bq1MPVSj?ahl@MM+yD7uQv-Gshxl(^9$OQvQ53Xjz~BQVeJkArKZdVV;$WQl&5j zQ%Jh}+Zx1>1J+`}Wf;xVeIfT{dp0@GTG?Z|Xb3U?+k8$3_3HqP=r-_^$$1_j9sRfQ zBamYsODG2O!4jH@-?&r50TK$JOYx_XAznel2gtW?MSGr1=W!7E-A(v^|H2SZgEPRl z1X%<9H$k$0b+qC7X+Ljfg;MbEaJ7aaHxmA7JqUo$(EZ6WrK)#kE532}g{z#?e_lrM zpGCU33i^bjlVwBj`sTv_$Lll}W*!~*vpDWq^1Oe&85jBRZ<v7VfvFquO8%b!*ajCF z3+bTT0F7by#+_MOn3sQ>k3F&)`CEe5&_7Tb_Yokvd;c~YOyr%dAQE74z~QE=PY>cg z|F*!N5MTMI!DR|#CyiD%W*DeKC}=WcDXD@t4W$%2bbnCEVeU-J^<iL46QY8$QUifo z&+aQOL<USI3POt|xvf05{#VD6C7{0wXgN(NNJHHfApkrMtpqm?F%uH6pbo^m)Tufc zR}{pSlgFn6#67E~EFXs7$?I~jq`8x?sR~9Tk`{mjb;NyNz%p43g-o8UG$`H)ojZR= zr7Nxoiea1J|6C+woat2kM5OkKR1H+{(;05a0*Bg;WZ^{E7V3YnB|#8)hNcOMf7}sB ziAM`Q6SyRUaf_<MHq}ski@6)F>=N4ko&k(lyr|a5v2OEWWyj_mXj?FU!|GVaWuAGS zvb+B)6m~rjnqWGiwircw@x>NPifrM@ieo<92L^;g0Fr`@bYMyd;X)(+yo-sD!PZB- zh4H04IQ)hCO^@#16LD64V7(<UwP1gcW*?gDT~DdX%w@M$D=8Q);><P_w<vh9ZnaHc z)tlPeONPEN$R3Se<MW@}&XCF(ctbU}GoYA=?II5UEO>gKbh%T@E=+#jg$i(-u>B3d zUKcz}7lY6PSh$3)p%6V@3FuJ2#H<N32wZL`na<gt0|FTsaBNqa-fBJyP0kc`;8Gft z>3D9e*{@p*1?UWNDwhB^z)KVzVMIaQ!pGPFM}P{2T)zAUM<SpjQ;nO(w64QgO#{D3 z^}b06%qVAQ>64+<o^0gk0L>D?FYf9*6M-P5au0AAz_F3Xf!p2EvY1LqkWz2-+ngtM z7F9rTCh}+yz6N!$g7sVZpFLY0-`SVIB^8=#Cua2M6_`L~22ceEb(yQayE|8!&wNoy zQ!H;wU^-$W0=|o9JO^Mv?=SM?XPmqQO3@(HQGwih_fmGFlwYk1L}<M$y^(j}PNza} zw0)J^<MrM3+o13U=xhKJq|ZMUg!>Gj;HY@h^h7}!dtuh`AO_fsYa@n;>|^Ce@wwl> zVu)^NDpDzdW4<>bre@{sTq6OYA?O?yA#aDUcW$NrfZ&!qI~mZTp}s2tdIA6Oh6~hT zcs|APJSs`J8=hyGC;Q^)J#y>;h5=&DH&CL7C`z{S4Cn}TccqlH-{*qzz69Jep+U?V zecf1oEm$Z(8{rZ}gA`}xK?DL(04Yua*w3t_h;4ysDIfI;wIYghLb0=e9_=0QjN1)z z5-Kln!$m!rbt|@0xN*~}UT+YpCg>`9t@RS*S0FO8z$O|UuG0X_$>$WT1q}d2!0kAR zDfN<XH?QXNL-Aqk(ngDVO1UyP=ZN%=jNmWSKF~pcFp>^((_aYIP0GG4K2dbd1{J>r z_+lverxb=PzPsSGo)q+?KOyXyRKZZ=!l53l?So5OeU%s)t<}2(*ba>KLSTOEd2X79 z!3{Yo8arfH0`4kQ7D37c!a-2q9XM08Us%5mHQ~><ivR#o2p9njcEw$a++X476?zm` z{5wFu@AW|2%eN;Yzoy_89l7wEP*nyE2v7syUl;NIM@qN9rxrkaKXqH}8d!l*Isn(% z06OCyJmHZBQN;#-Jt4xoF7BJjT<$sA1EpICp&x@}23%H?Gn#6A_6!@<BGwbd<I6B| z8F14OsHIxUH+m6OF|cAn*rlEcaEjg|S4351?1P#07(Hlli&KFUr+XQ6vQVwWz#;Jp zJqw!Yx{Z^0z?L5X&lrgd0EUz^p$Ur{?#$p}@XlZBcjp1Rb1l#<faC{Je`k{*hCQhj z$fsrkgWMdHkRj?zuoHTF<O&LCNt!W}Igl2aoxpfkxglFr<Svtf`<n_=8A2*}Mud3{ z_a?B+ytr>i#@h616Ot)eF^D!wR5s)Z7^?7=3|kcuwmx8{e&jq-(~nbvF)_3H$l2X( zkYhGtZ}Cg49Lx>^TSzJYF0ekWw41_DfVm>_I{H?iL*{aN)Q_`5&!hmH#|;8H;NTYC z5R?M`FU$<t-qUV)D@bZ&1GQ9Ekl<(Wx==najX{Gu7m@2*upt$?cw=|+F<dAHWaRrG zMFU&<)5|fE%{%Yj{l0VaW}QmZAkc*X^aK>9_?`FGj)&_JKxU66ntBbcpBYGZfp4Z} zX#l4HDA6HmBeGG67)$T+r)`U@T_gbmZAS$M*)POvwm~kF1F(x#ljRr(E{MqT<p9zn zhVn*Pw@Xz(uLFZ!8M1B`*gkxT2dLG1J*`Bbu>xq}{v&tTeU91o;R2H;l{Em)tA#{O z9H6O8N9IP*Q~N3duR#D<t<Cqi`-kWgkQRVr(CUUoPecX;rjEb9$31av?~c8286YO0 z>I6ZnaINi*D6Frmw><aJ5cZSuxfT25YpigYNnZybl3xG51HcSRA<ghk_YdxCXKL;C zPt-WC41WwuK~Q7>rz>zx4<m1EG^(?>d9zYhE~I!E(h_jog^^T`&8a*bk_UL>OHhy* zNGR?C{h6hPkvGew#hwlg-1%_s7L+aIF}n{XcrSE)u=wpJT!9k@5xbeHMWR*0AzxHB zs2q=eDN{j|*FmP%fsqsg6mR81O5P6guA7hWPgBaU0Ac+(eZ4B5LY3UevGB6qlOqAZ z2u>}=wtHv65%_`o)+>;_C;`l6vVAwtxVE-O7JN41dq1q|n`(yrw$(vm{h7tIMgbTg z2!uH`uhw9qX*GGU$5{U(wv?x_^R3iGJ<IClUtAB=3crqh&^QXFaB>29w^@x{wr}KD zP|^nn%_lh!#XhXIMG&w1KaNW{KKB0dW*akH4#WZqrQ6i(&S;wGyDhn@;=|?-B)y>f zzJHjrE3nU>Z16@LkqY^6?Q=Cntpv~=;QtP;dhU!%kgz-kH{6|~)?S>F7__`Uud1y< z;Oi{kHc&Tve;H8#VKDdZy<Er()a&6QHT|L_mbJ2n@em?qNGl#|ho|lrK?sv|{A&ud zTdFKO3N1C>D!d3^7X9EA`mBi-hXl;)Jpi6&T%jvx9Gj7o4vPg?F_L}b<q;`{LzD2+ z8Av0;)_J|$q5m4P6qZL~wFuYLq2@_FB8WLTbW?D=@;RQd{I{dy8s964@HAX@^9fbe z<r-6_7UnLxh#pB|Dh&Ym2m?B{YR4$w4f1+FS;&0{?1z>kN6;TH?64Xpk16SYUDG`K z;l_#!SV-mY<iqzvJi?jT3QhB1PA3HSG?4zsm}cQ6goFDEI=2+Ut|gEh{q}w5hC$WF z3HL2iR{uAp-nzf&f#I!m9reu>xo*&gu$s-9U6}I|ExJuMV9pS$8@%>xcE2hB=jM&7 zJ4h-D^!Z0OpEm579|er84^MnqN5q{5f$7KBSvcB|{gu1cV^jxGbd6orc4aC%a;-8Q za^GGeu^uLXOyYX@F`iuS$IF|(QV62d@mF?SA-}GeSZXe3p*F;eZnG=(!;qzN+uWi= zj447_CyP!135Ie7*Z0Lt)p}meKEArXT%FWxLofza?(>K*C^B|r_kyX)Xym94<mE%& zX4KF56}M(gIxD!pT}#|~l(Hg{4J1J^xRx@(lMG22SDZ(ATGd-6Y+=_L?dt#m|E;5C zVVUW&=X23q(058dwpsCpz@-GZW@APcAj#>r-Q~QvUnXQ(iBsJ=_vPXhw$nc#kA?(j zLSA1;P^e@iZP1_s`N^VIKK_AL7{=Fd0EEF!7wo!K#VfeAkLHCmC{mWXo)mQEg7nbP zO#pyPD;{aqi|%J}{KyL^)rh&JgGk0)y`r}qgj#;Pj<pT~Gl2EH0tDz1$CFaZ!tgm` zLr$0wM%`C&nzdpVE|f%e+NivggUg1H<9>U`m2x<-3Iicu0k2--0euAYcYDrxso2bV z==)a(Y`d7uI*W;W8=S}=aEOsSH(=kN=zKN@iCwky!kX4JxVQ)|&HU`!r~xt;IgA7* z|EMbPbsb{>eY~DR(6$8NeN3Se5a-e%*D8@OfymZcvRnA^qx~suyM(Di{9g;Fni17G zwfErxX%Ox^ptt10UI}aGYxTP1o+|pRrNIrrLklG*r3h#nL65_>O6G^O$Z3(Vl^rL} zgBK44zA;BXitLHg@qn#s%ByC+Mac4$fV3>3o~f@ovNFpRy<T~_E(*E*{$6q~w&x6# zAgXfrYqd3;3bTB@dl#HBPBHh-b81v~DGonSh;9q*7|8R(ISwiKf;f%Z_R{OW`Y-+T zLoPC{s@>!Pb1LS|zf%w6lhPQvEWn#5lv}5WNOd64Y!e(8UH$*0C0I_!91Oj-+HN`$ zjy|QOyi`Mo$k4Be>*+XEYsO9%kX0Qf+-)Nm($laWfGZ~Sff+GijeBw%DO9vP9ga2| zc?%aL4u4I?FhPVGA?@XD<B>ZDr}3o72|<<p(yjgJR5o)sfaEL>;KJl*Rs}8zIDuX^ zk03D(K-;2Je#iRb^#(o=44*p-2WYgH^leB=D^5FOSe*DIDM_H)lp)GAPOdE$mAi0E zBDwoQ$O$%!gu{)%po&&u#ps=1SASptj=x`KyhG|F=tov%ZN5ipE_RxqNIxTbL2QYK zd`MRoA^s2X#d4{?3|D4MBHEbGq4b2!c^8KSNovATn+p;x2-cehlfMOuY*r;TItW}H zN=Hm>F00D{atLk~6v1olk3|u6lcIcgP*NU3NLIIdh1j~fbkd*PwH^j-ZOlAvpD~+d zK$kmsj-<FPZK3aPPp=m|sYq$$Zv!bjW5{=tB^4tG<;ew6B}g_RdFyvT$~sy<J^^g) z=fPca<o0X*TffNR$km-SSp*TQfwCFWtt?N2en?Y%%>ZoKf8y(){W1&DI}mCocdg^* zaXy*P!*B){5V_?78I2qDE?D6E_QzRQY1IpDP9eE!W(hu?&rm9GI;wZ2oV~s)rT(yY z2ocUhglvxH+wfX$0Fmxw-%)z*$u{5Tlh`+d#7QaTk|%BxCjg_rdbD150^D(x5Y7(7 zJuL4zdIMllLgO>86JDSwuE8Q_t>K+1jT{i5K~spxI2Oyn{XKk2Zk1Lko6N1wdu7aU zQSw+$&E4Ucsf;O#y$lLrTQ)SUK;#}Oa?<8s*`2wt>8kYwW-a0NO~T)2tnys)uU^$F zv|c}a394#b6FZ2f43cU@JwFzz=g(~-Ws!a)dF<@$6>9~V2Yw{M>SIjk-(e}*!V3dL zR?O_)lXo6f0@_^1Q{&;xNv|4MpTkT!ep!bzN(#9~iqo+i#n867uvGh8q!2c)a;V(6 zw*l}IkX2GwIvWl5kYz9u6TpRsU=A~ed)+AI6vN)`onzUe<U8@+SrZg4W<Emy?d%bi z5M0fxDVvnDhAV~LOf;-V7TbKEk@dN=t<F{FKvwNM_r$@0>{8xhf+X7LjlHA(0m_#j z)T6p;7raD!o6yxccRhO(xORIy*WE=L*)$BMpUo^hu>ZitB+WDu^|aIeBp6?1HUTG? zV_CvhwdGuVoUO=*_ZAI!LZU4#EptEjYeU*UehZ3>PqV#F|Ec#;MmUx4J9=H=Lwd4k zyKDO64x)EQKd>`38Z4Xcj`VimP=?iqyJE`5I?(T2@>^`OS;$`asjw&HQorabD@=PO zn`b(6ns27!-CMt@jfKYwp=r<FjY#|)3>Z`HSNY_32_GLT^qh~RWHxaredz_%(a)@? zv74788|id7_rEX1J6zRGa3{*4OKHod@Siw$m2&n+&DfhPM=rS0)YvF@x{3pjs_Rm_ z30cn8n+Gl)^X@Jg-$Y&)o+Mypi16I7!#Pg0Cmm=C;2=TE)Xe8_?jwnR$&O)7#QLdh zN$O`)?<X?)7uwH1zh!MQ2+(bBWDZsn^N;K&;NWzl)^<<&sWxZ&`@;<SmYbWO2%ez* z&$;nYHN)UoZeiggg&PGfM3h(S&z29jXJaxq5~IIm{hn79pP$}X6Z*?`<0t7}g5%jr zA)a5Cah?;uXyqFZ4MSOdOd+_1HvGcNXCeSkLf(d&B4Oj|<me8e*Vk<<0&z)6TE;a4 zDM`r?d<GXZLp7zFRk|r;kEvDPy^QF}Iwl#3G%mI2$-QyBOoQL@cwBT&Lp~_2+XRQ| z#ocFe_Eyb$(P^d|Q!1DPi8jlA47UA0Ni$}yejCJS3{|Nx8#i`&yzhPgkOBXyCvh?5 zFRHbqee6u%nfQpN2ou@XS+1!j*QR3Q>;7Gm=bLA09t>Znqm@|X@1=0#d4588yGV6* zuuJae?=EM2YsClRXJb7GpTx?VezYV=Yca65nl&9#AtvLv9NyzX8XWr$&D%2O?u)m9 z`Y#T0Y8q$iY0}k}ZKc-qDqMamtR%|7gD$<tSGz4Kc{lP(Dvg83!&QGW6Kd6(?^!j$ zuG&MdTntCO@1goy9j>8UCH>?MQ@Hi4ofvi1lW{F!^YXl@ZX4Uqfe-MtVjY>R$WP9~ zuMvn#TWEH82n#LP%gYHqU01;B2u=;kUGVT_3U1{f2{cq(GIKE+!jQQ@-eGbnk~TX4 zr-k6H$fs;S<9HmElHKq(v);)}B;nm2cm%Tx?7^N?^!)hY^4|8hFT9q(nXWM1e9mvW z_{D>LnK32N5$jlF=lbKpaoUKWAQ^69IcjQZslL4TFaoNJ#P?A$l4oHn7!KUWJy<8< zzBA6frlQMzcqeb~q1}nDN5No)+t#i4G*|rS{_v=qBrX>7?rp)TZ6;f#vRJJ%bxb7< zuP;2{Tzn&m(K?&T#5TQdOyPT<vcpd%{yvefPK)T%CwHbUq-gj0tpq9-wNAAP`z_y@ z!h6=z=65MF`|J~i3dcq@{wHl$<O6(Wy4nMeoCEHJHD+;5N%;!IV68~N{I4Z#GT)JW zvA#QejZlzSse2!@k|R3dw+JWKp2?y8443c}9X0i3oOKI){77mOzlRsR?TxB=!qF8Z z{U(&MD8n#~xhYbQ>B|qvQOtQZ?LkQ#4BOoFS(G?0$o!=r)%f$PaYpwm1xSUpc&ZsZ z#HS)J%MWffo?cPnV19%heVwK?C-rGyPW{ui^n3KPe2qAf$b_@AJQRr*lZ>jH=ePdq zSmCtg*_X#HA9UO3Sv2l)uaaW?^Ml-)kV~G#(ZhIK*U;CJw=C*K97F}3n32Bpw(oz8 z|7uoYJD%l%84J@wb*Rn&(?U$dC$aeZb?uA1l^b)n3GmT^c*yq^o<a|i&4<_qTXe~D zSBgm-*${Kbx!<?=HNV2SgGG7}EgDzJ?JN7ZP)rKy$2XirDqX&PuW{jH+q27E@<BKc z{lgmwxTd7<+~bW#qxzT}B5hjt{5pQ6{CWKLMvna4*&!??+a$S+;%&U62lX%jvpE~# zV!0gbwnuGw7h5Kx4J5S}BScO{>@iZF3NhRYq$&yyUSo*99QM&MixQSM{WEwB)D09Z zHT5*um91=7@z(gM3SXFpchU|vhu4oP2P1BPG3stwBbM>Bxn7_;J8v6a8k8O`f0zI2 zN%C);awD?aBo9V@FJzm#N<{9k(9seobstAeD4x6YD75j}XMHUXj8-t6?mY>Y`I&-b zG+_){ie}SH@YC6c_XBqXxNrWD9OqwCaq=OfqE9*JtmK7{-x4o!kdSMlA6h6q(aAxE zdaF7=JA=>1fiEd3dBzZp3T(Rd<L{5Bt<^0|;BWo<4+7dmkGP(RW6XXuE1?-DZuUDD zq-fkwM35?(cip$09~&{{Ikw^Ag+m-9=oa_BKOSeFe~?%4@bXd1r{4lD4lP15?080; zXCDlnpDmW{eQ<Y1SE?oLO6oI=oZ6n=C)80zSQ~F`XTM6j_RyoEd(Nb2pXAOSg_nlg z=zK=I3QxL9K(y12uA2Ku&sXlwcvm)Vx*8{2OXzo3`LnRZyEbs*gM$2=#YacPTZdPd zKJh-Gz(@>w94=ZdmSU*bd`nF~05+h>xqE&b=lR0iU-FrTfhuNcg=ORC8^;&YnS$+Y zd-@6!Fnz%$-P$rA=iM+Pe*aNE$dKForWM&PF+BrgAtw7x2h6q9O={oDZ3=uWo1PY5 zYL1?Aahz$4!=sP*G`62BT3tLzsP0eG*l4WzX6=(8y?q||mQ;^Q_tw&+*GNY~P*Bi$ z++N?{AeqPQu{iPy!itN;al;-L;1K#qPdz$oc+N*f%(lXMsW5PmF5-Mk+hQ<((mC}& zOXWqwae*HKi<Rdr8&Y_F+l2<Fv`8|>gZb#5O=}R4C<%b&CaHWa<~-jEZ=BiLM@-a{ zutnBVHnF>^F5!ycV?FR{@sE%5q9C}wxa|d&(pk|Xc32vXS7?r~i`=0F|7b#hDR&0W zdd^@pqdsEWgHQe*_mF+qau4jGq_~j#qDG_j#)jONI5^TWr}+CWKBX$ca#nK1hc3%U zeM;u|ZQX|1`G^`<C7uJ@S<wwwY^9ABi#g^RU#MriP6&(oo1RejoSN*fs}Ex4hp8K2 z%>2VXXW}*cwzHAF>%5E~Nv4-*&jMEG5%t;XNj~#uwy^B?D(PZ&M}l<l36fpzd7C<{ zsKa1Vh{zKda(oQ_t<yt(x&q`&QDDmbc!bT#=o!dZ96}$ijwwH6nKdN9KWaI)!pu`Q zKQtbvk@;Z4E_OLv#muIA(LF=OEIw2;<1?{MtDpZ3lNjRXA~;&%RT$qcvPfa^-I>lX zvo>@Y<foSq!?{KS){1OKzTL=+zVLm8=ZrXQyqdsQN!ss@$OITly9gMpFQ2&7dTXqm zp}jwlKo-ny{%m8n6pvz4V$Uo?!lv^#L%Pb71YxZBNMSsJ8B;D~vvGbpa~te*lnQC+ za;q?v$8P<)lh-F?B}nHThbtYW@vUe#TZ}Mh!6$Ht{-UOzQPPd6zWuvL&5noFioT^q z!IYYiT9BXOByofHyg%+EPC`aW%78Hjk&DmhWh%b1wjB$V(X`q{1k2n*JP!7q2Ts?b zmrZ|)=pE1F3KDQdDH$2j(hJ$$P*fB>Q94OJbqG=)IlBi}GCQN)7{`WfCFAs;1yE)3 zsXMUti_bXs&Y+>=Djt~yb*ASc_j%YT?kC>rU4+O2kPpQ{HjvW?p&*iWh6hd^O!9ty zQp8yaXU_#;hctn~B06?^hRe!h!d^`7S)$CL5R~Q*TY3K5<;b6Q#`Lpa#d5juIk(2n zG~83W%-UHQBO94#AE@`-#&{6T+W_o5<*!Rd3bOLCpZrL&Y?!8WU>M7qPKU8)!_0KH zLd+D4a)IcTb;I(mT|;otPE$oLjZ%;Z&TzPE#00rXV>-voN`@8({sH(wA7d(=!Rn!1 zB_Vu{k#iK-4A-K^$2w5YXQ$Fj-gpooqsz7LmCA)5X{0MWb5+EH_VbfFhRz#bd9v27 zl#!M&hK?HQ#vg^FA0HofJ!ik}b(Mflg)3U=4xA_iV&EjvoZ9}3(C10Pozll@zxj)5 zU)<At8-%VX>40*30ij&?;sM_NCjr^s*Duu~3@JWI9tPYgYVMw;Sok0V{Q}E}u6FVa zIgZ8Lk9Zb%uL}<A@+?__cfy|zKKDm$f@9uITzc`G;r&)zL2`k9g7{0pNeLd8Ihz7c zriTe`n(=#ob(D|r%TG57Q~)<8;lZhWr{Q~a*^1(Xe~@`YbaIl-jY2;y@Yz4TiYA!f zG_xZa$m51{{Js1q>*Q2N66BzTks{3IdGIlN0r4R@7xC<81rwZmlA`#DU`5-r2g}&P z@pDIUOOjq(ad_XH#@F#ta+)W4^mTNw0&y=YR-Nl}H1lmI7BSMt)VgE`5D%Z8j;u)% z!ie^>7f@gqG2ccl7=O$r+Oa~vUPfM&R9ZGKge!>OFLrNhx`KP*Dm*GZLyy#58F~UV zDu{>P2Izj2ymT%?v#80EAobC8R&p@xw($veWjDen(y<!pXk2<EB|9AN_Y@)Ch@bo- z&w1o|s)st-`r1^8_mafNTz@P)kohD-e}|s6txgR8A`zHr$p$40YU(H+aD(e{YO#mI zJuh8*uld`>(~DAnYM=P<r~S|1Al#Y5mE}uU2wNrFwttZ`cgcyS5v?%u6qEi!IhfyK zIH!Ud&RV`B>N6fMD}SDRkgmx(;64#`^{j~f&ncu^A+gt@{C~9nipNX{;-Z_)4!r>X zx3`_a`&@+36t6ZBD>Cw|J##hc^1s9L0oK0D<56$hwZ11NwG#u=zw<Y_R+h#;eq^BD zCx8GW;cP+@SeQqid71V$7E2^;*pwgJZxh}&#n~f$^oG#~S1jl{nJLb3((5pRE@J;^ zuKSW=k`6=PSiVl*r3VwD`3aXjlZ1i?SAs@*y6d`DL-t$t>zwx5Ll5Q8z)6eqGbA7= z==<*UE7e)QcW+B=b{L4S3TSiK^6d<Mn^^6&Idcg-PGasmWJzvSMzefBZXmv3GNvRN zH?Ngo52@Qt0<k~~{r$?ar5xv>Z=DbN&f0zplG&K)W<oX|f!JU;E2%B1qKr^da70Gv zo0TccS$Wvv1E-cU>f#mkcw$kElhj`%#cj10?pVGtGTPm*b>a0!Bcl*vfF3fnV3{r4 ze$}T)=1t;u1rF!rvyy00-~))Z9LtqHxkOHq(&EDvsLT4?_#)Sx>91m@Hhn=sJN!47 zRq3DRQ9ca71E1WK+GJ_)wOssJ*f7Df<?*nUkMLMxuEDuF-Jh^NvlDzF(nMBE7q^b_ zi0$s!2Rlx9>P&F=jZL=BHaC---fgLQXD@&jbmkM7o3P-M`5hAn$wv&m(iI$cH(LeR zR&^)+V8UL2`-c;Ltrgb)s<hP>Equc1xp27!F=$b*F^zGKIk%W=JjR_74>012h<K#y z*P$|sv^AF)0^gt@LNlk1{E+8+V9~^~hU|U@pZPwJtaD|r4}be2JZCf~Ys41E63=<E zIH#)^&x0OQ{u<c3gp1#Q4Ci6j-PB%W<H-`QGeY;Xk?!k`%ZG+1`Q!J`!r@4m65f(} zO*qC`sK$$p0RzT%0Gv6@p@av{&MefEv~t&S7`kU02+p-Z5N0z@b@fhvzX1KVgNN=R z=eS55ZMd~vqwc+}2V{(JP=to3y|6JR93|HTulO+~;&Q%?I%&WYg@{3tRtzzenLgM& zl2k0h7!uTXjO14waInd{vRB~CX8Rra(#O8En?N^>e(;<Jzlq{Gi>Q`l4Q!HY=2w!o z3C@X|DBnP000J@Tn{Wg|AZGY*bvH`5&KM)5M~s?!6c2)IvtR~8m1cKv@cTvJFo%_U zUaDvh{)!)Y_SAtm@26;dTi50?EXN?eT&i0R#OI~ILnIm5K7v=?>z})6C1p9xium<} z){i#ZLl^-Knrn2oQ5TnA#Yb0YUnG7zL;mb`u(7IAv<aHwYbLBF>Q)<{pdegBw@u-z zu#w3dx?V<~9;mb`$U|R#sc7kQpJ-q~bU5!K*nWR(=6HwL2}*i%a_~C3_K}>-0}ekL zcqWLP8ejAW@z7l#AV$AZJwkT5r1zP>Yq_!9FF~YBm<<s@Fy0x9mupzo+DV9hdIU4x zeng)Zs=}cbkGaIvl+{85TOK#ql16}Onm8|g28EALej5&}%U#cur}U8VT{YHS!GTwJ z8(`C2KHYR;De+#oit?g?!4V{BQ-KTEYb^l*50OFZr!bGXmSvP9<HXWjXV@QTq}jnl zW|4`)<dOUa%P;|R=~r)YJA}jsDU`BH74&aE-@xxrOC%O0HHfWkM;1NOpLcIEzK*DL z!I$I9;vi>05N+e~uW$YeyGC$L=;`-}w0u$|szUv&cvs($&S94xeCAtO^4O(JJY#Cy zhB?Q~&M#=W<wUg<LMv-)wdA6{?><5f1s|XAnPE|I`+k$@Ft_X#RN{6<8&2nZ!zHY? z<=xET&*;_Fq`2YaR%sVlOVF*-4)DA+vj!UTF8WGQV!vf2{3yspP_e#G&i4XIZ(#_u zK12@A$gMYsqbYL+%uVXJ4GS+{$pcO}E_RI7R|xYo%zqz>OdF{c4)R;|-6#7lI=$`Q zZ&V^3UVXvInTTvspI^B4=kIZF4GjnU8}hJx!ST!c=5m#$|2krFKSwK?Q19d|kNU3` z?d7eG`i~Z;<gFL`eVKHT(eXHErXW+6O~XTbL4w*I$#6mPhcKo0L1Y%})o<JGbhg4H zky({r4!!tmaqq2Ov~h9Y^{V5)g$wB~NM)e%3<nZ2RP*s)^GIY3Q4d}UQ}#T|ZSGa8 zc+@#>Azl4B<iq462f?wv`Nwwx-(Fb_yZTP(wfnKz)6dKNGsAuP+d;Tt5VQ)<C@>Kd z3KIT!Ai=@tfXU7Lg8G*Ttq~za84lH!$$pZO2gC$I7t>-61B0o+h7o&7zy>EYB=6BY ze6l*F0!c%dX{<IpQ7{GEyMq}Ml?U_5W6R<txfuHOMA|V|#RLg_-(QV)c;rVy6KSHj zaB<EP_CN%Q$eCA`I{wcsAp&S7YG3JG*v-hcyzoJXFLP8g3>m5AVn0(+Jquh~aEKwF znSGBl5<m4tKZn}LbbyyMB*01p%2@<46s_5K{~xB_0xGKY`yU=aqy(fvN`?+8rMp3C zrI7|vLb{}+8v#*NkTO6(LSm#F6e&eQIs}v!3CVXK?)SI;@2thW>n^>_nRA|JKYM>_ zMBg_rE>?~Hs3#eo>SR4JX?V%>xaz)=$)V_x`3^4XGPI{}II}{Zac`4ZCm5OshgWjg zMUkq-D$CYEKh1LzH2q^d!eyAaV4Y7*%Lw;golkCuMTok}`$HMIv77j`4hhN_A;Q@x z$M$DwWcRNt)Jx!|D3t3ebl^TE`8->m-&jXTEb|?nt>W#G_YJ2mzP@{hD|JEqL%v42 z@MmUat{bKFRW02~4B@bO1tr|y=MB3<0h`G9WPE#%m6L1jRC0PlsVJYWcURI&{Kw4Z z4~VWCoL|RAopb8N7m8@fBUQSki%cw<&)ffE>IMdG6Fc2!&788p)N8|k&qOl=8o+WO z2n8#KBu=fEJC@)uv3QdKsUIHR!gR>?Z<V?Z|H8U8s2A~8bRy2-feaLDHWXBytSl+r zuhqEhE-&=POyZ~?;7rJl%-$|2^j0VM)SffILQ5`0K5uj9@)z3I`$rCHNn{nM&C#K& z{}!=kwmzneU@rI*_mmgjrE-3slz-rVW%qpLD1BMsT@jQ#EKL|kIy-usAGgm_nj|P6 zHtzK`=M1#OB{aZu&gPM8`}6#C$H`qIy@b+0<@LT}S5HPtAbH=Vz>jmTIY}|kFK1yl zbJ<g)L}5&^@AWk{*kgs~v-_*RT4Ee<^!ztPHcd^X-)J9|y`>eL%8dIvkgHBg9|hwE z5e`*1tg31!P9Gm?+dEw(x5ht1U5p%_;?Q6!ZL?KV_{Kwdt)%ruq>i=nkRP;rG|&<7 z<h^k888U|A9y-|({QWi+R|U0|+BnDRDwpi)%8{TgWt2*Ss?QLuriL^L%oH3xD2av! z_)9qh&!ZXP4o(~R8;`u0?c}-;&yZ-H!XRh07k*2LRh6~W{TW;GM*P=P*sX*2<+5)t zK!g15?C_wx9M9X-98x1g0?+|$s81Q=ONwxL#RdOJUOYEs{Jv|}^k;tp3Tr|ZV~4T+ z4%ICl5kL&P+{612%rw_<c{j*pR-(0o(mJ7Y6!R-Cm~>1=#@PHH-HFkO><@<C<6TLM zY`k&PVOz7Ffcm;)x-aUo1aBQI!r<Je5yln%ud|Dbe^4jF%uLl3kvDvV6?8kfKat(Q z(i)ClaglACOpyh`<)HwTg+S%Met{MT0nN#*>Q1e&K;oWnP%*0P7ca<lJDHO-P19s- zE0<CjR14o4`+OqE1l1*lN%F#7>$-UCv@drj@=Pwn#faRND*ur0sMBI8#3Oa%aKV)2 z;!*JQ)ONwS?aP4AGG|<rGg}s7pq6+}VKNIWhn2|=y139XVLgA<Yk0QI#^u<ixWqD{ zhKR-n0I19iAO7=d33hphD_2LCTBD*~@4x<igVIzCP9KJ?{(HX0<!@YthKJUenvgTB z{jaAG8``M+UvC^O%NTYuG4YMVouwj!OSyz78CkKHy-ha^yCw#1wy7k=ILe(pq-)J^ zN+8q16T^@;<RKXYCD6zpLSJ+*WVEhVC*<ETam}qvu~kV}8rtp>%nU3RSTmKcD3Ips z9}_&k{fbpBKAw=8>1n0I2W!Zky}KipaZ!xu>Ec9O#>_c>XF`wbiyg4xc{!$jyua<| zdw6wp6eFF}HM=XhW%4Nm*;Fv+VbIlW^yDc->DL*{uq!R?qmp&MENRsgQQW7Njr{rj zRBEmy=+F#G@Oa6;QP<;B8}kqR=ag7|eWO1^3Hn>+-0_mNJ7sb*ac)?P%XK_rZW#NP z7bVeQ^PM1Hb|%XZ3OJzKs`59~FgaPDZ}QOzt|%qfZpJTkta;A9y`4Q9eVZ9--n;4d zDuzRW(NrSS);32B<|z-JmTlzAmr0Co8T>OdHr?6L^G%l<*e@wQX5w{f>cU{?Fz7vg zW!w&K{{C>>K>3@6fx*nfLsuNoF)`<wksdh@tFp>o#$xI(s^*9tom&3prD>qyA7;MN z<K2Rnm*w<#CJp=~H+-O~vjcK~LMI5teF_2)5UO$NB*&UMw2~Gn8~GKxiuIMhf?>bo z1TX|Qk*?4`vAWSCY5wTg7nTW0od9>J3UgeVaG#NKv1=*C29-?ohHvn>(rMmj^Y50q zTC;itS|@K>D5@G)57=4_(2`M6##28~l22xB$$S?h(FBCo%f7k>OR3MhPhD$>>FJ+t zTp1F%7cRtR!v=U)3*da+g#CKXG>+V`?tE#Es;F}cM3@b#|Af*UkW_}fF~Io$vfS*C z?YD^uz5NCD^7-hcoSeH<ob}j##}<4=C+D+Q{ixtD!+J2eLwrNmvA69tt7}W<&^Pgm zYW`D)O>ui$Dr59zb#-_PB4VQN<#WAR`{;cbwLgn9^Au2~Z6s`xrTTS8LMwB^eAa}W z4~56=TP@JupKf`*8V3tn#mteV7Ebokxt_0LY<kM&ul=vMngo!z(w&}z%3}0I+%9qn z|0as|&UICXeK(bc<fCBbDS==t%cl*v*%7Xk;?h1xzAN*_H}@!zC7DO)l)em87TGHi z0_Hm|Biejl4msaBzfP5weNlw7S5k|e{Kb!=kR?2lDc<kq^=2Z}Jk@}UyY0M(be6A_ zd6?I2PrudCuk|Em&qrqS=bj=BD4<XYi7y`N38h&NM!PF8%fn%hkfU$jd>{Q<K|(zF zU6atq_eX%$PC7DBK^K+hw)Hxa*d8kfd&tXRX4>EP{Ay-l*JLD(*ktnW_k`xca}Fw0 zDLd(T!-3LILwx1?YG6-KP3*FL9w%}?&cMqxSfNbWwkjdeSiA<m!3`T`b&WG9BjzBb zf1?cu+_`*4f&4aWd&QU-yLX=rqn5TeTHg0Drb_a^_`pb7`jO<6b`PI}^NT^du^mtn zwFlXeG4}UTD{4<aHfT$yHOYUSH=3v=@a1o!-P80ZfYydT7#l_<D;T3&yFOz65Y?Bj zxqqTj+zANSEUglo*)rK+{c@3e)vx`<&GIVyAo*mLK0Y5TD~)k#nC9xr%-&<mKP~dy zcoGi%I~)SE^kR&F;Ijh0O|u_ddwz7H^8AbEBUWlF9GD<}4tu#w3%r-cAy-dC=3QPz z*b!3EPn+3nw<R<C2F2A7Wj|?`_?Gv_ckt)$W+(wm)SJ;lQI_eAv83^q7xu%S!%kMK zYl|D_<d4v}qo;iG0qybM{KImFj{W9@^J;#rHL@O`1D*Qur^snr&kLr<tHg3JaNQB( zmtP*jw^K`^3YJ!`EfnWIq3x(ouALN>u3lHAtf5vvF-9=8vN`<;p<mN+emdN}F!?m+ z5Ri+?${p?JEaL|19axSre5k4+D|HRV_tgwk9d%D>-L2btLutM31jFUsmiW`%pWBE3 zH8f_M3WG#2`&pUJ5oA2~k_LXyd^P!R{g0LQ#V1wWPR2=ET1ECB)4g(_t=|07S-06< zychX9IGtMZaX2p*^hU^l^zH{Uo40w-JDL`Npa5iae{>S@ZKb)je!RTgJ<=|z5RQJe zVT)wEH;w1BIxip5zS_)0$Rho-J2Mo0w8`4!j@!udfT*M7MaD&d?G9^KU651w)BWl7 z-H)652QRjk6MWh9>;|&Qd&47QSX*hsD+TQ*biD!?{oHoG7c6t7_6qsdx%fHuR{2@| z4iOZ$VWUw}puMJm%qFd!OWTK=zZavoJipUaNbM36_rNz&&}d%2_(4!|pu-pNy7HFT z*1qFppZWyoe^g5E!{*tqTo4H~{c}lQQCLW1%MXZJEO)}ugMW^&@^l9(30HoHC_obe z8=d1PzQNe_t+hT<w|k51t?iWbnfT!x_^=)Ej4wk4)%iKeQP^5Oec(RANz0HDZt`hc z!Wi#kXQ0<4F#sG29$kjeUkbPcqkue6-e1cEBr`MNtSLP!`?52;AIskD;sxH`6_q*x z!fLLh^=)~<(d{vY`*5r!zdyvI?)!I6vdUuAJ(fT_)WY`BQT3A$2j>Z|+56{Fq0<{} zp8tsK4374ApN_<KjZ8-%<R5aP#$jiq1@L@1&}FgR{ugAN;fpssEbzqT0`rC+9mV_| zrPumIVzOikLRdjT@%+l8{MTTz;d_6SKs0e5jt@N--md5l0W>QgJwP0`2u3iLw5i+w zLhKrU+ra@lR3UA>N!G)0v7Z|@76<;V=E(rXv_DHl$ch<4#m|wpO*=mp)gCcPYGPcf z4jnE$*n%w$ts>``t-0PdBdkYp+s)|+rg%04P9W2Wd(I7WmZS%?Q+`1!`Iw{VkD#Hj zpgu)z3iOVj-|cT0?M$ZcSNtW;?NWuyAN=WNK5;>%{^=Ai#IpVlNm<+S6*q&o35lMZ z?2Xi09O4nt?!(BB?oW;GMij@NhEA&7z||^>WXQhk;wEo7O*=EPp;P1(^7vQ@>$os4 zAOCdnK%D<{)>t|_gw&_f)zFz=T2@T-8ea#+%Kgrta$h>)ardmDa8sY|?0igXi@Vb6 z6d4zrb**DInpuE)g7e>;oRx3x9R2vqg`Bmgd-n7wly9hpvcj!97qZ9v-oA=I4c-|{ zdI~p}CO|qbd@k3h*{};1gGbBRVqmQ-cbAyr54<F25S-*{#0g3awixdnx%u!p8v6%F zmX8}^0m#bj;u_@Jc>Bfso{UExC(n%eU1WpZ*mXw=|Mx4&Ztjmiy1QSEXn5FEFeek( zw9U$5V`BJ0y<3RT3+tr<1>5QasiwQ^G#I6sKa%Ce4rJ8D^^{^K9vqD&`>09R7ib#+ zm+{)AmR{Q}*qvpK)&vu>G@L4O**I|#xS@0VZ&n$L-yiCUcGZ>G%Md;{be{>HFRG|1 z%e8*Sm-HPFkMv&BmW@3EDW*K>91Q@)2wkxN`t*u`VW=I0dA7Xs*UGHtytAuCczu+; zqi3a{1TaWdAM$DYe@<Un5pbNe;GE(&kCEayF&lNi{`jBh)o@l1XhtG~1;!>P{j_rO zJ{nX_+Xj3k08TxP=(Q%}i-0$e++7@vqo5@wq|gbTzwQ^r<Tzv#WdDgI^!SdEnh*`9 z?bbJghho(-4}IfbMykFhlN?qXnGDswLys4fGyOD6Dk6?^_;I@eRde-|9lz3LlQG7< zy7BB5AmMctUhfO>RW8o9<<Z!Ae_?kq+w}Zylp(cz!MclmFf;0NpFY1ZvZb3z0AW#9 z<A%{7Vt))H?2Ba~bD}mO^G^k-Fp||xoaj_4<TTjc2>Z73D2UHLu_tmJo0dM4Yh|99 zOvGY;?;E_Qg46vpU7?2Be`Kz>d^e%Pqh*vbz+hmO@pJzcr07lM9`HbKs{A&l{Hs%f zZXx!bNU<KT170(eFOBni5`GW0fb|vc*4c9S*4+40?EG@G;+03;IkY72P)jrdloNQ_ z7y6&QbNM+sSgWyRJG%0#<pcdj*vLluWO<0i0W;h=>n@JY$M}F5r=CCCn>#=8imoRP zmfu9E;mv7^;Lh*)>k9X}tvI4$)X&Ra@h7gjT^AA4v9UK>m&HsdW$4jFAci(w#coE3 z56mCW*|~e3*XED&mN3Sj2UZ{7%rT7Jp~_$muGe*AuDzYrnrP(zAlFT(FegkXbbK?e z7T2xxZ8Q->%DFL_$;~zaP3hTAN0N76g6ij~j33a$R=Dx5(eQ{ixMJR5Y`ylI&Hd)j zwHuL)FVt=MXy_2E`;7e8lN0*I2aicpT4u?1Lgbe}%%#1rE|O^sz3(FrG}wKjD|Dss z;F6ER{RB1IpJph>0a`=_^!M-=?6-*8Ux#M#MUC<w8eYb~Nr2+UkQVUV%{>VAlk;5* z-h~Vi{D~G(s|_558sfi)#|-A^*x=nbHV}a+q?hxU!T7n=SZr%-c6t@SijE{}Xbc1E zwsB0lHVuB6wOX)#xWNN3oYxr)SC9>|3K(Af{0?3qKhVfzX|SMEGe)YV(GySj0M;ok zJyq%6io1}yL9s|@-IjZEB{E3BrDoB#&O5(s%Rh(-`U6QCEjqeODe)Or<<+k%c17nJ z*7^yh91I`iKXS+Y)7em<f}`-mir+(-+-^7$-@uQ-A%^mOfu07mfv;9ecYH0!1q@bc z8yk1r$C9l94tnQeub7ma*_6!!<SuckDZ=^>lywhcoW5=&LK%#RAX$nsAPI_h#|>F* z&2H|cJ#we3Y5{27-hVZmwSE0$Z!76(q~+Bow?f+ZLxqLex5Q^{4xpO>XwSM!v)$$P zq%2Kfuw}Ew^iNMh2_rbJKx)VDrA!`pKTa8#fRdELid`4vB#kkKFXzbV7Md8WrGsgn zh^)s!q0U$B(ij$kWAglmCZJgJI_C?=m}fsv;NlNP3$Xy~^Y`v2r`FDD7_R~*ZYy?D z-+jDvb1|G%l~8ILW^2O9;|(L2$)_JTwRPM)4@U-cuv9#6Zf8lA<?Tx4c4@WGb;@@w z{E>{z5&-)8<0zSi<}KY!Hz8anEe2z{gNnae);429_2+NDC+SF>9r<~mfTHKgqPJp_ zUI7dCrK%@HBnT{j_MEwNnOk{8l5`G<EHdiwIbUU68QSH7@?ZYZKe24`6xBTMNo4kj zij1xQ?H9c0cr(;KbTx4%Qij8Ucs0$qB6$eX4**N9O+ek|^d??e+JyXo(}mWK1wuEh zoNh)|wGQoB8#OkeXVz_z@lb~rn?Gv;(C_SM&Y>v{pOT*5i0j^kl{(%OPTemZCAbyS zpZ!8$3Tq|SgTptk*%rZu^+KP4+%e?=4T#)?(cw1FF2Z=qrmq%?LuTKTA7o-TsvyS0 zrH!$9Who);Q(R(JoKclO?$UM;#cr<5u3fnnQe!4Y_yPAvOKEaDZ-rX`_9T|>1a>p@ zMq}Pl>NY@+6Vco(OJYR*T!eaozc&z3FtUsHN9$jmVq$L3it_7{TixXqZqcl;l{L<` za*Faor)F!bM7B-9*I0!1Ksi>AaNE@B>)BQ=E7|#e0Zk8)RR8esX@Z4La^CPG_V1RS zEa@1b@^2AwOCeMnyfzayTAx}w>^!UR{_aR+xj<Q22n2P6wd-#>^UWAGG!GX^8(NKs z#^_=V>IoI#KO)|81T;puB0560%e#{0(4@`I@!TCpFZey%$u;+b&A=9lK<di+wZ_Ad zGo9|qb5FK(HhWaidBN3{0V!o-Z6QT(im>^yYIsCe7WQyGp<+Iq*7?jEHU6UlYj{eP z{|$M%od)PH!vwdkjjxoIyMIJ?@{gtRn``#&9)vbF_N+woj`6Q%O57Q(iV;-xoMlZ7 z{r8MUp@e*+IxS}WTfDR9_9d^6l9BO6RW$_A*v8Se9lc3cl(jPaQEkw@l{$~}94-)T za|ZdJ(*ocwxi1jU9owhrGCCDo?#S4%L7lAp;7Ar)zR38Vc9PK4!L{GY?kgNWOIU-M z|IizGD5Mt*hIyYJ1}}AO5>zKnK1_(YB!FCCZ76eiH*ODLuM^i!ga97n4_3x{3=Ac~ z-8)2dFH}29I)B;$fChW-!v|v)+x_rI?gnF@BNA>Tkvc-h7aMbS_sG+oKQ-HeC=j9B z!($4PsZ6%n-LD4c-1>1nBK{M)ha}WQv9GkZ*NO6GMrA2L2<E!%_lo6lL-|W7nr;OZ z#<<_8c*QdOn9bb$3f4Lbb4YtB;-wT&$nM|vyK?kCs7G^M1Qr|QPh6GvvL0>S9lAtP zp$WbHf(RdlXyYZb$W2?vy}y^6G``@K{H`mS+3}A!yA^QfQqRB{G{FZD6!$-V>Zad` zuxxtF<o}|YPlkLA2x!tw94rM_h5}$jjm)%!?vkqRiL=ufs;0j~#lQySfuMP$=6DI0 zKQO<p-#*%_A)(ccdHz}#H9CIz=;#@+z<Zj(WE@$ML@a|S{h}d^^(rgKkElgeeNc~+ z*M<X;QaMjiUU%9kDpC?QzCtN13ac~f<)zuViZUF8%enTxHv=2?%H3}T*Y=(I)-Z1S zav2xUd9oEB{Y&!Z(iLYFEU*4rFhJ2dT@N#5pJK<r*zm^TCpAj)48V2MOV9XHMyBY3 zTU#Amj_&Mz^<gGs=vzcWN%>pRnXUo0hqko%Aj#PJyQ(9Yn)NsKe1w8+`<40Z_Q&lX z6}vuR%l{j7n7r&22*73sa~pMeSD9h6(6wLxHgVzVDF0)cIJEm~FNE}dWaKG8t}TB6 zn1|=@2~|4y=6t$TT^<!DiM3>+7bf0SrnfFS8~uG=QDx6aV;D<E&91$N%+U2wKjUa? zzE$u?nh03zT?A~USLWd<!~10}{V$g;GBPATc-t7p>#+f3)EAYMf^3j4ZFMKq2mwVn zYim%re>>BhlF&kW_{TWc5pA3WY7{+#^IVm<zXo>ltI*^tWFSuH)}UKbDixaheucDc zV-Gn#)U4vM<Gq!S!p3rhKL7SpnLMefba^p1^0>lhQT`r~C^6g5zSmR32|e584C=Pb zRR8jvl?CekS<-#?)!%#%N0uI{mL!yh8|co0&_Iaa^}H;9FkO$+30~=R4{mA!X@)n8 zc+jS$kifAtXgW9|*xD9<%fBwsT&B&kzypLJ!+x0TRM+GI{UFy2^~a{~Xe+X}77o+> zz%$0iF(N#pox^(0)y+L2QpMMEUE*YeDWiF1YatIO#T2DwYjlM^tr0DrQy@b1NLBL& zYZWeYMJ1Cus7IN;?wpA+x1Jjt<qF<w0twtH?V*6<cS)A{@xfXXas+wRWB1c*KLOkl z(YMb$vu$kt`-;M!QOk=GI9=p<3NY=-A>!xwQ+1DOvu(<)W-qh*AIi$9suu|4f^B4T zKK0|k!sMP2V}jizd<|s1=8|*N9APob_>U`H^z0@?jiPn8x=T=kqT(9e{svPP1^Xf$ zv*o<5X71cKs_iZtJCSp|TpPyD?Yfcw6)Cc4cD9?Nw7%-g_4%4DPCj80R3L<;B)St4 z2D(4RF8c4v(R{$Y8!hrThiDro5JjIVjrQ5HwN}LnGil%Rt;DA{gYq`p)&KddTOZQF z;0nSj)y&Ft#{zY(@vRenV28Y7YRwrP%f+~^?fNLw=10b=x$0!7;dK#-y#?G1co+}s zmUYE$&^>S{Vt-YPCZxC#-4++M&STy6dt|N&nZFVT*F19-6|?kjjMvQVS2l44BqFSm zw=Gk%3acyPh?wiToz1m7@o3pfU#UWn!{?I2>o01l>{$dXCLj_vP|k#D3}fraOBQ@2 zndQ>j(VkQWck%0gHHogyZePoB&878uZ8ox@l*&HXM%&odNWdhcRw^owOLeq)<HXoN zmqnP%5F=4l^dZ7*dL4Mn1R(YApxLZ+M=x62aNnC`ix*i}KX+HFmF5(y`N?9Hn}1fS z#7jVjX15P>7DX}8N6r2%?m_Sm;5eePfv;Iy6ge_y{n^NQVV0Ioh9KXD19Vswx}+p2 z9=Cox)<Ze^`V!GS?cY$UDly;RqHys&j}mkY!vIZBrhz&`W$iRUcoQW=nmcK&;_ie6 zlkQ)Htl|~j<u`ikmi^E)k;#>S%8)_5K!_Z`4~&EX@cJr|A0K6UJ(NUIS1l4rr~-gE zAv${(_IX5hGEfnZhPHtBMc^+u$UVzPl}hw&0iM?cs|QIm6#~S6{jE}<uTDn5Z3N0r zI3avaDMYBbpIj&~X3!KKo^@7<ZhIGFyv8I%gj%U9V%wQf4sm~w<>t2vOm}2#?Ac~} z_3-T25`GJM%awgjx1I`5s%;e-*mXZ%&ya+Y=p_4PKfIU4M~KP~pNq)6xr2RQ>$7=x z8X?cCC=xgczE+pmBqm=^O#9Z~g*z4!t&Jr{02}?!rKdO6G4RiF)Fujy5{N8+@s33V z43`KhUi3RyUaIti25PWn3)s~7)q+Wt5Q0SoO+td#?`}#&jyJ3`vCO|)<<t8@`@?)q zkqQ;J-^>c@n&C_jqK>le<eCuQC6g{&ytMz(9yAYF20WM-@onS0=9>4?RjIq^TocGW zw9A**POElA+kUP699F}kCZhy9iE@nb(PqAOPG71L+GDFG#rHBRpPA6M5FmRDOmz!M zyrtH3{7k_VGzoG*r3>=+ex!PufT4T6HjaP?!y^I;wmQUVN)@0BjF{E46$G(dlv<+F z;~dgg7mu$Kn02i;R6m{hr(#)9k<RUKq3*V5`#DZRisa{vc8G}Lzxy2q&V(2c$vxEZ ztq0=-*;+L4#vd9i%D3YE(&YIqg<tGgEB0|yqfQ)x9y0Gteg}g^tKB)>FbRVU<KkUa zmf<zntca#lQ!@jH>Q>zIWZrv?X{$dPU}LO&XVEVlq9sp3Wb=qOq@X(8HmHr<+0i%- zXh+S98V)bt7z+zY-{S+8LjgF@2s-pLTK&gQrp|Y?|K9xwO^t@iE=j5JbpL;+-KGDa z;YS~$%_GrHvcT>mRP>>vZ}n%Jy3vzXlF)~?gVBUfAAk}CxE_AKron;R9bwN=6osg= zH${roUGMb^!K5IZME{otq)b@p*!S^=eb(AL-%zE>Gy-CMCVE$y#|I!AN+LxFod>(= zD)Hz***PG6axmT$fvcT5ILi57FU#=Jk3EPxMjDYfIQ)Yt_w)wZf?c!C283>Dlievb ztHhQkhBJ_B^S^5z>ZraXmUKwty8q7$uwg)L^QIlw3vYTIkt9RI`$$bMRt1obtUgg| zDIErGVB^y+T5Vxdq2Tf!PYOkYoK^GlU2&fQx)=g&-M{8X^?$wh+08Fh=PgQ^iyx^{ zUtoN_JmZ)7*d0szGX^DkM@m$bzw03CHG(M)l4j{nf4h63n~?tDYJm{4)LF<_L2iFl zNV#dy#;ETjreMU{5ZBw?4i9KE^l#EL#Z~ZjV2ccBJL=@zhD>Qi>Y6gIIVRu_n_RTP zSA!{x<-je1wiSq#wc~BC1t8Bbmk&1pWwb>`iThmshnA>K{Qs6w{3ur0<Y24HPg03; zVFE1b``5`ho*b-SH(|H~;#*)BY;9T@5)!jW5}#X&h<X{>g0?4BR`u=3!`B9uw!w=k z=Hdsx8?5lVfU*(<GYa&XFd&1{h`sy1DM4M`3xd2ho1ycz>dO4kJb*6S*e;4VTHDsj zCWb^&qr;X7OA1vR#P20;N_91ggj5Q_M)juWYdn;d!%WSZXyw)p_;R|+CTqzon)b?0 zv_YOhuz0Keg+AFGZPj{iTqufc&u>zF^d3r)lwEV?D>8}r1K-L8pOfhdp#bXdL49in zTlSUEwuqh}kjMOez!!I+Ui@Z-V0op6pDcR@o^{|6qMeInA<G}#vSkL)ktM#wDg=yS z@U%kbM@T^|tf`S14_*V1YLu7Q;~-NPu*d^Hf7^vElY$2-N;RRidzk=sY$#B!j>eh_ zUfobB@`jDbh)`w^Ud%*WDtH<eGhXtOMesr5GyT}D_y#O9v*Dg~%s8VVNOneDdrv1z z@m9XjGRTs{xQ^xxJQt<B(E93wTMntmV9-v%1GlaUB9c1%v>5f#{!R;f8q~oNni^Gs zV>Qz^X1rQ0K&^7#B0|VC^B-F-373K?g-0GDY_v;=dzRqmNys^l1>CQ-{|?%O!3iqV zlka@3nU8NuxE-q(4O@dcCm|^-uE>MN>V-EB!qp1pv=$oN0}~P}X8>ANRi}9%MsIaf z&5N?QK`Sn9WP_$uSNkrhbKLIng|nxofpaDVre0llMX*ko0Cvr9y%U1!*V)zI8i6qZ z1)Pw^A=Ifjf4U`GJxFf_EgI^@2c^NS2PP<5K}8>wSJ|kGB|ITM;2c^cKge%$yO~{g zx^>A;W#O_|069$3tXBiiN$D|uUMlVne=0gDP}D!39B0{D*-nvjXLhi;zGlc2K5rPP zZ`{5Y)FE7F@cScd`WJ@HE8Bt!VIP*2gk)W*J3IQ@V+ytc3(^Zny+1zoE)lSKTd#em zuA+}#g%=eOM+7JL|1b=@PfL5&b>6H{(&kEBbikcQ0aEc!Sne0mGg`Z>-n);A$|?`& zy*_+^^S*ZSvjtJmDn7j+byg@ND$9^$Ro0l2&X`PL&g*phFlgDUig?+H!}O~l2*Kdv zAbJ$&MKW(i{{l=|cg%#R$kr8_oEoZ)`M)h8KT#xtARmIU9%+{(84USKOd>4bH7YCl zilniAy^|(%o`S*wIrZ(-5^aS<^yGfI`*QQyG=<ta-W<XYIOaP7FIHY-7lOBwD^`^- zY`BJ;XI}H8yGfDMM)2znE3dTLmOsJpGxvLo9f)^Sn;h(bu1~cFw+@eFwZl+CL>Sz% zudV|O`r6WfO_Ea8F`tW2A3yc^D0$dGZw$po;sN0aEDvRnEpZO&Au2eX8>g&2wx@Zk z#0*!LFUYFX$ir!jh_|(SYAMG{=n=kWLF_$cMOzv<9DP>T=iCu>unC!jw7})LDvfN4 zt?gVhYuoOPJ5Z+!<j#(mh&ccy0KG?+Ej&7m<9=fI1?Kn5nIPvOjpvyP*RnR_hI6v$ z#_XhS!zzmQBJ2PdfZg18YS$Phg7%MPp*Hzw6FqW!NQgR|KVM*B+YI1dcjC*06rnUh zILYJn4`SMEyIK={o7cQQ|Jh$#cdh@pMsQ@i+9aNV^(KrE&^B9mU<mPmFaQ9N_yxLh zsLjFH3v&2yXvl5gj{!U7h;+Q%pGCP_mOU+Cg(v^CqE`IRA%fKYSHIELRHoaT{XY>s zi@UhoVE_<GRL}78MQPvOxs8DO9{Lwk^0*sp>1t3U7qV0Z?96?1#PEFO0+4;eaXUt^ z922Bwss2X4FojyuuD`l5O^DBi5=s&0b!J#)psRkkT75D(0&*R&H;4kn_cQ0Zas@k1 z2-q<Cn0;iZ)0^U%dF3K+yis|B?!oUt*0Z3@FJ(X@IU-_44sbkAT1Y}GmbSP4yX*&N zoNw;G*{<KU%;mZ6bo`$iv9>{1VfQwk;%i?E&|*20)<0ieMyq&02N}Q^*M~)f!toj` zA>XbTpS8woKK|wHi-YZ*mqw97C}3_eLU!DseB%;wCcrIANO&1@QAwOrRqilnUj<4i zk1}7WOYpfiv?@qVJ07M3pl@srCL^RpME3jF=PH|?<ISO83wJWoJ%mB#N&|`mK<)^Z z-Fb^1WIkd<Q5m9^cOL9_f}=7|_G|;_gK0PxD3Msej4;7p!eazGxp;ybIzz!oFbinC z1YL}JO2BBz1=%S+k}oPXq2s66t0=#j`oDq%Smec5i74W`d>wH^&nJ?BZBs}#n7XrF z(|&dsWoEH07ie-2CAc+e&gkdA9gc_;KFU;{QvpjaGD<FdA=;YSy`wi!8K*&K1q!~d z*T=Y=Z?pS%p2RH8V6oc(n^9BoUf?4#o009{Av8ov9^mfLW=}E`L%@>-+G-x2U5UcC zv-6ClfSY=vFQ&}7t<6&`V%05ESE9;BdKGJq-OEsdR$*0hl&BLEyyn&Ja)c8FV--=p zXht|Q3OYc9(j)N23AUXl3<NqM^XlJwBo)f9qwK6(7HG<#Tv|;2!G9ib@7d#EYU_lS zPtRzq)^k2wEEWN9pnmEpO0G+HaX*yf|6S!A@{vK8f$=}0Ks=v9?$LB;1cWGlcl<Cd zG={Qk#deFn$%<q^r6vbJtn9S#x~6)D+2Inezsf(bM;o$9LV>kTqe$xbW%86o#+epR zI+WTd_@PmaG~cRdF-YdAVi#`#qm&YU#TxGW)`mp(Y}*{omP^N>bpHxoZWKQ9DS)o1 zEnD(LE|Qb124(mICtg+-;p3E#<$EbXfle;bKq6g!!U0k{Lp^t9v1I{<K(s!aPZLhP ztg8?Oe%_SeV&I%9tH}8hy;1*b=zG#HGk35Ml?<>-tK%TV0opy{$_b9oect`nH-~yZ zs?%}!cf56M+Y!l5{?#cJgd%!Hx*f3isAp?#LPZ=J65w;U7|c_%zt7#a<Z-&-FQbKA z(OHlG${2*R0?xIh0Ppj1EW)S&=7gmgij+AFtb@QAnlBG8|JJh2&fdOzy7ZI}b%8SR zdc77u;)lI@U@;-LCh{th<mY9){U2LdYp0#S!czWubI9EHqF!6N@q}Z@XKik#M;;_S z(y}WunIHyFbEgFC+u?0y*i!QGr6tljCWVRhr|P28tEg_F$Fm>V;i>9bo?+tL&p|Vk zM(=7cl$dCHQ)j7}A_YD2;5Ee-$3q53gD@YIT`v8|rNV}hbG+4wf}JzDzfL>K3-7=b zjwc=p=ah8W!FAyHt1ISws^=OFo`QNaEKUAA;FA2z{+x(|iD)EA9!$Q{5-UpPa*GOJ zeiw!nCYp=ItYj}!Sr~zL9csVh%-J|cSqjP?pf6ExYmCUYv^6u@6gbfxTYv`Q#u#3) zFcOwK+9aqy{yAvH8Qn})h+~B~%KHOI!GXah@itE8u|!^f!+JwJW>oFDExXZy?x zXHp1hp_L$*D1_;vy<WaSjQDK;%_^BLU*w2TuO2z%LoLukLrMmH9E@ftaL~<!=h0A- zIYEYizS4Qmfmn6DQL<2MmGL9)~z8U0GEU9na2zv5HexTj7Hoj1b}3ef|C0Ar%* z_jTy=;`&tHejwf}t;GiBKa*BC1*Sx>ZYO3g6KHlSK)W>`Yr;HJ%wmMUL#OykS=M5M z$c?cBB#a;yFg>fnKjwi&$g6ZILfd3L5_|!sw7Awa11??V-`96}nd2u&x_jojn;S-k z_@;6i^}be9)m)Jx1*vCy-joawrV}6jlp32gWqf)R3-Tu-j;7Evr~aWXsNa2;Mf|)L z>(q%q*(k;+W2TmVHll3170%xL_sZ=z;D~S(gAwl3Ip`Ld3Yuch!M&N=>J|@Gn!Iux ziw!4^NZkU%#rOeifBya#QC?oFFPZ8acl7v-{kegG)$Eo<6iHKVQnF)Pgv`Z{2(nC* zUv$YtQGDyS7v2?IQFI%5wY2p#*Qk7j8M*5qg@`;uADTcvN{gFV6p?)OiZd4o=*4F! zFQR?g;GSGe?!N*fJ>2_+t4SXTC|!?L)nt7GjrEU3PPVpx?ISq;VUXr$to_-pE-8x^ z(DDqf{IXWGlLtiRPs(XKK%l&`G~6uD`~rs$fqG7-07Vb-ia4_;<^=^B9x%_^-a1RD zkQjZ~EmJqGP~-p<19x;6r-dGTky(Mkk)$;QC(w#dyh|r}${dWyRq3B*#?lb2E4|2n zrXiv1^qYGA$?K&YkiMs}P=Ke73QU~(&PRyr97=~mCik<n+-w&olVp-Ryod=AUe}uU z6J-FpkOixfjoOOC>^uX5P--}1Oqu}odHMXW?r;X!_#L^j%-e{K;4DO{tYgjZz=k22 z1i%VoJBI6bugwJ-vW^IbhcI+cH2e_`ymdrQ<Yte2_JcuEE6|g4bOZy+k3<&$=p#XP zF!t`p#@6PKmD$}|fZ32&9@d$yDeu_W<S=Vfh$N|dRvs^u5Q+vMim%wvu2>h!a*pMV zY3amesV@&^Zyrb+8yw2GTKdQ`nR;H~k&MfDoF6>>Zxe_~P<)YtR5;^eVTfvB6~_K3 z4X}Sh%`e+m1zPPTYPKZnv!P6bE>1)G!xq1Fe-Latc)dzGTLy>a)hBmm>uA}`gh74i zUWRwD5RXf-ngou#IVv}znMo%Jx&GZ3G}Nf`3FBR^N|hm#uJnz34=6_XWC>2E{5XkD z4-`xuu(+B9@FVdbusk`GTcLY%&Dunq5VN*2GAqIeVhf6w4=z{e-Fm)$K+YM6EQtX8 z8D6;fP0u*MmXr)iinwC>6bc!=QQGf3BH-Hu!S#8P{m{iMG3Lq%?2H)7_A8DwlntHu zFa_frMb|Gsi$J;it!iQ)_w^;&9O>_{KQR;t`!?Pa@%L)!bi4}HhPC%(G6w9rh@~zK zttZq%uzxrjy*XM-A9-a|(zE*~m_m0LR)gpE4j+wRur1RY9;Q~8XyTt;+5hI1WfUQ< z0P0*Qcmk+ldhkIlP&X^T;>&Xlr+!7OiWj{{ny~twL9hWz$!hQ;CzUl{5b%oBydr)i zsz!9uu%#W?v|@`0XhFPZug~TP*0M|p-asTbn9;>onV;vHg7xir+kVt`fJ7hXQf(1* zU1u+X*-0Z<EjV028U`k4Jh?{l7d5}DB>$-IODs|zT(K?_P404L_!H1ZKgA8b{u2QA zf%;1~iW(IZwt1{;ES|mq{e*k}=O$~!m7E<UBivf?j51aNoQNQfW<W$2v3HFZXb~qZ zi7WHgVG!2_S1W|)AgY7k=brPP?Hc90Gpp<%*5fLg)|EX)R=2L|j2UIP7+XAfNcfml zzKrhJ+y`R~n}XybyDkHh>()CqP`Cm6XMOv)pUcrS(n5z6?*EGyBUU%IO(E<h5uAs8 zit+@5@4PX>d#)2Tzdcy0v6Be2+t(;wMj4jO&oD)T9HshNsS1d3D6f@<^^Wzu`ftU2 znw88(q+UPdqPvnh*YB|rPOu9Mw_`VB$^Dz_#fOet`y5*TLd^)foq3C?kLM&awd#2i zqUQFI`E|wMdBWn7Q#!a3@Jk7E3xn_q(KrKE2ef4J%@6#DU}rUn9}7%kHV&UZAq3}c zc9XAGFbPYP8_91nK=$%MZw$I6q=JCvm;=!YgMz@}4E^%D*t;8$ON448)*HBc!EJkS zEL6xbA+G-+0{*Hi0E+R5F*4k%1qLV>YiO&!+{gj`HRD_hj8m(t6Axj^2dO$S6sR&T z6;$M~G^OeGBOo}rpV3&GevJjPUQ-iwTlmNU$Va8*x*OF(;K=5H{VSdk-TliOgi%oq zDj{Gb`M=9r{Qq6n{LR84#N+~6b-V|mn~T&|!ymxK^|*~xF2G!LR`P4vixp;&C9FD7 z$xr0zX1Y&I)KkBBZUn|UQ$WTuC>6fLq}HLehsadHS}Y9S`7~T}EOHzCE>N4!KquY( zXJ1WKr+q@<j>qLw<qr)c{}StnP6$i<SMv}L4WKo&XObXB<@g!g(B^gU{Gr6%MzJ2L zuqwZj1_{J0A*$_y9>Zvmr;VL9_NPS~tQ@|s-mxUm9Xr=7=7V1Jk{RyN=2aoWuWQw_ z<8h>$E**HZmm~-wd?fZ0fv5lEwdO_p%w*X8E$iz~zPsby)q)6?W4`8TQV^xiRcmoM znnxbJp#oo7$NyH;f5}bCcq~g-+(-;!WHWJOLjTsM;Ks`)P&|yGeBJY%+g#JSQys8} zRuf7(-BlD9X;xpg3~mU$-e?6`)om%0O|=JWj*|(n-?p-^B-<z+Icw@jB2x_#u8<k* zFdPXgWq-uyQ6ae=A2l5V2qwwQ{ozp<osbK<a>dEsXaMQ1;idLpb;g_B+$Chr*Q00q zHBYe?m7|>>O~}(RwS22+DCSzHn>!0y<(G#qJ`IHwYMql4CUjj<BfPZB3MCC%0Dh?f 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 literal 0 HcmV?d00001 diff --git a/images/logo.svg b/images/logo.svg new file mode 100644 index 0000000..ade86d8 --- /dev/null +++ b/images/logo.svg @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 283.5 141.7" style="enable-background:new 0 0 283.5 141.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#52AF2F;} + .st1{fill:#FFFFFF;} + .st2{fill:#1A641E;} +</style> +<rect class="st0" width="283.5" height="141.7"/> +<g> + <path class="st1" d="M236.4,96.2c0,4.7,1.9,7.3,7,7.3c2.1,0,3.9-0.4,4.4-0.5v-4.6c-0.9,0.3-2,0.5-3.1,0.5c-1.7,0-2.4-0.5-2.4-3.1 + v-9.3h4.9V82h-4.9v-6.2c-3.2,0.3-5.3,1.2-5.8,1.4V82h-2.7v4.4h2.7V96.2z M210.5,81.5c-3,0-5.2,1.6-6.1,3.4c0-0.6-0.1-2.1-0.4-2.9 + h-4.9v21h5.8V92.4c0-4.5,1.4-6.1,4-6.1c1.2,0,2,0.7,2.3,1.7c0.4,1,0.4,2,0.4,4.1V103h5.8V92.4c0-4.4,1.4-6.1,3.9-6.1 + c1.2,0,2,0.7,2.4,1.7c0.3,1,0.4,2,0.4,4.1V103h5.8V90.9c0-2.4-0.2-4.3-0.8-5.7c-1.1-2.6-3.3-3.7-6.1-3.7c-3,0-5.4,1.8-6.3,3.6 + C215.6,82.6,213.5,81.5,210.5,81.5 M187.5,95.5c0,2.3-1.5,3.8-4,3.8c-1.4,0-2.4-0.9-2.4-2.3c0-1.2,0.5-2.1,2.7-2.8l2.4-0.7 + c0.7-0.2,1-0.4,1.3-0.7V95.5z M193.4,89.2c0-5.9-3.3-7.7-8.3-7.7c-3.3,0-6.1,0.5-8,1.4v4.7c1.8-0.7,4.8-1.5,7.5-1.5 + c2,0,3,0.7,3,1.8c0,1-0.5,1.6-2.2,2l-3.3,0.8c-5,1.2-6.7,3.5-6.7,6.8c0,3.4,2.4,6.1,6.3,6.1c2.6,0,4.8-0.9,6.4-2.8 + c0,0.6,0.1,1.6,0.4,2.3h4.9V89.2z M164.1,81.5c-5.6,0-8.1,2.9-8.1,6.4c0,3.6,2.1,5.3,5.4,6.4l1.9,0.7c1.9,0.6,2.6,1.2,2.6,2.2 + c0,1.2-1,1.9-3,1.9c-2.2,0-4.8-0.7-6.9-1.9v4.9c2.3,1,4.3,1.6,6.9,1.6c5.8,0,8.9-2.5,8.9-6.9c0-3-1.6-5-5.2-6.1l-1.9-0.6 + c-2-0.7-2.7-1.2-2.7-2.2c0-1.1,1-1.7,2.6-1.7c1.8,0,4.2,0.5,6.3,1.4v-4.7C169.1,82.1,166.8,81.5,164.1,81.5 M144,86.1 + c1.6,0,2.6,0.8,2.6,2.2c0,1.2-0.9,2-2.8,2.5l-2.6,0.7c-0.9,0.2-1.4,0.5-1.7,0.8v-0.4C139.5,88.3,141.2,86.1,144,86.1 M145.6,94.2 + c4.7-1.1,6.9-2.6,6.9-6.3c0-3.5-2.6-6.4-8.4-6.4c-6.1,0-10.3,4.4-10.3,11c0,6.7,3.3,11,9.8,11c3.8,0,6.8-0.8,8.8-1.9V97 + c-2.6,1.1-6.3,2-8.8,2c-2.3,0-3.2-1.4-3.2-2.3c0-0.9,0.5-1.4,1.5-1.6L145.6,94.2z M123.3,92.5c0,4-1,6.4-3.9,6.4 + c-2.9,0-3.9-2.4-3.9-6.4s1-6.3,3.9-6.3C122.3,86.2,123.3,88.5,123.3,92.5 M129.1,73.2h-5.8v11c-0.8-1.3-2.7-2.7-5.4-2.7 + c-5.9,0-8.3,4.4-8.3,11c0,6.7,2.4,11,8.5,11c2.6,0,4.7-1.4,5.8-3.1c0,0.6,0,1.7,0.4,2.5h4.9V73.2z M98,81.5c-3.2,0-5.5,1.6-6.5,3.4 + c0-0.6-0.1-2.1-0.4-2.9h-4.9v21H92V92.4c0-4.5,1.5-6.1,4.2-6.1c1.4,0,2.2,0.6,2.6,1.7c0.3,0.8,0.4,1.7,0.4,4.1V103h5.8V90.9 + c0-2.4-0.2-4.3-0.8-5.7C103.2,82.6,101,81.5,98,81.5 M68.6,103.6c3.2,0,5.4-1.6,6.4-3.4c0,0.6,0.1,2.1,0.4,2.8h4.9V82h-5.8v10.6 + c0,4.5-1.4,6.1-4.1,6.1c-1.3,0-2.2-0.6-2.6-1.8c-0.3-0.8-0.5-1.6-0.5-4.1V82h-5.8v12.2c0,2.2,0.1,4.2,0.7,5.7 + C63.3,102.4,65.3,103.6,68.6,103.6 M44.5,78.8c3.8,0,4.9,1.2,4.9,3.4c0,2.2-1.4,3.7-5.3,3.7h-2.4v-6.9 + C42.6,78.9,43.4,78.8,44.5,78.8 M45.3,90.6c4.1,0,5.5,1.6,5.5,3.9c0,2.3-1.1,4-5.1,4c-1.7,0-3.1,0-4-0.1v-7.7H45.3z M44.3,103.4 + c9.8,0,12.8-3.3,12.8-8.6c0-3.8-2.6-6.6-5.6-7.3c2.4-0.8,4.2-3,4.2-5.7c0-5.4-3.4-7.9-11.2-7.9c-2.5,0-7.8,0.4-8.8,0.6V103 + C37.8,103.2,40.2,103.4,44.3,103.4"/> + <path class="st1" d="M168.4,58.4c0,4.7,1.9,7.3,7,7.3c2.1,0,3.9-0.4,4.4-0.5v-4.6c-0.9,0.3-2,0.5-3.1,0.5c-1.7,0-2.4-0.5-2.4-3.1 + v-9.3h4.9v-4.4h-4.9v-6.2c-3.2,0.3-5.3,1.2-5.8,1.4v4.7h-2.7v4.4h2.7V58.4z M155.1,58.5c0,5.1,1.7,7,5.6,7c1.2,0,2.6-0.2,3-0.3 + v-4.5h-1c-1.3,0-1.8-0.5-1.8-2.5V35.4h-5.8V58.5z M142,48.3c1.6,0,2.6,0.8,2.6,2.2c0,1.2-0.9,2-2.8,2.5l-2.6,0.7 + c-0.9,0.2-1.4,0.5-1.7,0.8V54C137.6,50.5,139.2,48.3,142,48.3 M143.6,56.4c4.7-1.1,6.9-2.6,6.9-6.3c0-3.5-2.6-6.4-8.4-6.4 + c-6.1,0-10.3,4.4-10.3,11s3.3,11,9.8,11c3.8,0,6.8-0.8,8.8-1.9v-4.7c-2.6,1.1-6.3,2-8.8,2c-2.3,0-3.2-1.4-3.2-2.3 + c0-0.9,0.5-1.4,1.5-1.6L143.6,56.4z M123,65.3c2.4-4.9,5.1-13.7,6.7-21h-6.1c-0.9,5.8-2.2,11.6-3.4,14.9c-1.2-3.3-2.8-9.1-3.9-14.9 + h-5.1c-1.2,5.8-2.7,11.6-3.9,14.9c-1.2-3.3-2.4-9.1-3.4-14.9h-6.1c1.6,7.3,4.3,16.1,6.8,21h5.2c1.6-4.1,3.4-10.1,4-12.7 + c0.5,2.6,2.3,8.6,4,12.7H123z M75.2,43.7c-3,0-5.2,1.6-6.1,3.4c0-0.6-0.1-2.1-0.4-2.9h-4.9v21h5.8V54.6c0-4.5,1.4-6.1,4-6.1 + c1.2,0,2,0.7,2.3,1.7c0.4,1,0.4,2,0.4,4.1v10.9h5.8V54.6c0-4.4,1.4-6.1,3.9-6.1c1.2,0,2,0.7,2.4,1.7c0.3,1,0.4,2,0.4,4.1v10.9h5.8 + V53.1c0-2.4-0.2-4.3-0.8-5.7c-1.1-2.6-3.3-3.7-6.1-3.7c-3,0-5.4,1.8-6.3,3.6C80.3,44.9,78.1,43.7,75.2,43.7 M41.7,36.5h-6.1V55 + c0,7,4.4,10.8,11,10.8s11-3.8,11-10.8V36.5h-6.1v18.2c0,3.9-1.8,6.1-5,6.1c-3.2,0-5-2.2-5-6.1V36.5z"/> + <path class="st2" d="M205.6,46.2c-3.7-0.3-6.5-0.8-10.3-1c-0.5,1.7-0.8,3.5-0.8,5.3c0,9,6,16.5,14.3,19h0c3-4.6,3.6-8.5,4.2-13.7 + c0.3-2.1,0.1-4.8-1.1-6.7C210.8,47.1,208,46.2,205.6,46.2 M228,43.5c1.6,0.2,5.4,0.3,5.4,0.3c-2.8-7.6-10.2-13-18.9-13 + c-8.7,0-16,5.4-18.8,13c1.4,0.2,3.6-0.3,5.2-0.3c3.1-0.4,7.1-0.9,10.4-1.3c0.9-0.1,1.6-0.2,2.4-0.8c-1.3-0.4-2.3-1.6-2.3-3.1 + c0-1.8,1.4-3.2,3.2-3.2c1.8,0,3.2,1.4,3.2,3.2c0,1.6-1.2,2.8-2.6,3.1c0.8,0.6,1.5,0.7,2.4,0.8C221,42.6,225,43,228,43.5 + M234.6,50.5c0-1.8-0.3-3.6-0.7-5.3h-0.2c-3.8,0.2-6.6,0.7-10.3,1c-2.4,0-5.2,0.9-6.4,2.8c-1.2,2-1.3,4.6-1.1,6.7 + c0.6,5.2,1.2,9.2,4.2,13.7l0.1,0C228.5,67.1,234.6,59.5,234.6,50.5"/> +</g> +</svg> diff --git a/swagger/ui/custom.css b/swagger/ui/custom.css index 82ddd31..2b9197d 100644 --- a/swagger/ui/custom.css +++ b/swagger/ui/custom.css @@ -1,20 +1,24 @@ .swagger-ui .topbar { padding: 0 0 0 0; - background: #3399CC -} - + background: #f1f1f1; +} + .swagger-ui .topbar a{ - flex: none; + flex: none; max-width: none; -} - +} + .topbar-wrapper img { - content: url(../../images/logo.png); - float: left; + content: url(../../images/logo.svg); + float: left; width: 358px; height: 87px; -} - -.swagger-ui { +} + +.swagger-ui .topbar .download-url-wrapper .select-label { + color: #1f1f1f; +} + +.swagger-ui { font-size: small; -} \ No newline at end of file +} \ No newline at end of file diff --git a/swagger/v1/sdmx-rest.yaml b/swagger/v1/sdmx-rest.yaml deleted file mode 100644 index ef17ea2..0000000 --- a/swagger/v1/sdmx-rest.yaml +++ /dev/null @@ -1,2327 +0,0 @@ -openapi: 3.0.0 -info: - version: '1.5.0' - title: 'SDMX RESTful API, v1.5.0' - description: | - The SDMX RESTful API, released in September 2020. - - For additional information, check the [official sdmx-rest specification](https://github.com/sdmx-twg/sdmx-rest/tree/master/v2_1/ws/rest/docs) or the [dedicated Wiki](https://github.com/sdmx-twg/sdmx-rest/wiki). - -servers: - - description: UBA Data Cubed - url: https://daten.uba.de/release/ - -paths: - /data/{flow}/{key}/{provider}: - get: - summary: 'Get data' - tags: - - Data queries - parameters: - - $ref: '#/components/parameters/flow' - - $ref: '#/components/parameters/key' - - $ref: '#/components/parameters/provider' - - $ref: '#/components/parameters/startPeriod' - - $ref: '#/components/parameters/endPeriod' - - $ref: '#/components/parameters/updatedAfter' - - $ref: '#/components/parameters/firstNObservations' - - $ref: '#/components/parameters/lastNObservations' - - $ref: '#/components/parameters/dimensionAtObservation' - - $ref: '#/components/parameters/detail' - - $ref: '#/components/parameters/includeHistory' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /availableconstraint/{flow}/{key}/{provider}/{componentID}: - get: - summary: 'Get information about data availability' - tags: - - Data availability queries - parameters: - - $ref: '#/components/parameters/flow' - - $ref: '#/components/parameters/key' - - $ref: '#/components/parameters/provider' - - $ref: '#/components/parameters/componentID' - - $ref: '#/components/parameters/mode' - - $ref: '#/components/parameters/acreferences' - - $ref: '#/components/parameters/startPeriod' - - $ref: '#/components/parameters/endPeriod' - - $ref: '#/components/parameters/updatedAfter' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /datastructure/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get data structures' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /metadatastructure/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get metadata structures' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /dataflow/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get dataflows' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /metadataflow/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get metadadataflows' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /provisionagreement/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get provision agreements' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /structureset/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get structure sets' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /process/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get processes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /categorisation/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get categorisations' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /contentconstraint/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get content constraints' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /actualconstraint/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get actual constraints' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /allowedconstraint/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get allowed constraints' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /attachmentconstraint/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get attachment constraints' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /structure/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get structures' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /conceptscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get concept schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /codelist/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get codelists' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /categoryscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get category schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /hierarchicalcodelist/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get hierarchical codelists' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /organisationscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get organisation schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /agencyscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get agency schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /dataproviderscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get data provider schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /dataconsumerscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get data consumer schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /organisationunitscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get organisation unit schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /transformationscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get transformation schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /rulesetscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get ruleset schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /userdefinedoperatorscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get user defined operator schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /customtypescheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get custom type schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /namepersonalisationscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get name personalisation schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /namealiasscheme/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get name alias schemes' - tags: - - Structure queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /conceptscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get concepts' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /codelist/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get codes' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /categoryscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get categories' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /hierarchicalcodelist/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get hierarchies' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /organisationscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get organisations' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /agencyscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get agencies' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /dataproviderscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get data providers' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /dataconsumerscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get data consumers' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /organisationunitscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get organisation unit schemes' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - - /transformationscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get transformation schemes' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /rulesetscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get ruleset schemes' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /userdefinedoperatorscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get user defined operator schemes' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /customtypescheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get custom type schemes' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /namepersonalisationscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get name personalisation schemes' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /namealiasscheme/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Get name alias schemes' - tags: - - Item queries - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-struct' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - '510': - $ref: '#/components/responses/510' - - /schema/{context}/{agencyID}/{resourceID}/{version}: - get: - summary: 'Get XML schemas' - tags: - - Schema queries - parameters: - - $ref: '#/components/parameters/context' - - $ref: '#/components/parameters/agencyID' - - $ref: '#/components/parameters/resourceID' - - $ref: '#/components/parameters/version' - - $ref: '#/components/parameters/dimensionAtObservation' - - $ref: '#/components/parameters/explicitMeasure' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/if-modified-since' - responses: - '200': - $ref: '#/components/responses/200-schemas' - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - -components: - parameters: - flow: - in: path - name: flow - description: | - The **statistical domain** (aka dataflow) of the data to be returned. - - Examples: - - * `EXR`: The ID of the domain - * `ECB,EXR`: The EXR domain, maintained by the ECB - * `ECB,EXR,1.0`: Version 1.0 of the EXR domain, maintained by the ECB - required: true - schema: - type: string - pattern: '^([a-zA-Z][a-zA-Z\d_-]*(\.[a-zA-Z][a-zA-Z\d_-]*)*,)?[a-zA-Z\d_@$-]+(,(latest|(\d+(\.\d+)*)))?$' - key: - in: path - name: key - description: | - The (possibly partial) **key identifying the data to be returned**. - - The keyword `all` can be used to indicate that all data belonging to the specified dataflow and provided by the specified provider must be returned. - - The examples below are based on the following key: Frequency, Country, Component of inflation, Unit of measure. - * `M.DE.000000.ANR`: Full key, matching exactly one series, i.e. the monthly (`M`) rates of change (`ANR`) of overall inflation (`000000`) in Germany (`DE`). - * `A+M.DE.000000.ANR`: Retrieves both annual and monthly data (`A+M`), matching exactly two series - * `A+M..000000.ANR`: The second dimension is wildcarded, and it wil therefore match the annual and monthly rates of change of overall inflation in any country. - required: true - schema: - type: string - pattern: '^([\.A-Za-z\d_@$-]+(\+[A-Za-z\d_@$-]+)*)*$' - provider: - in: path - name: provider - description: | - The **provider of the data** to be retrieved. - - The keyword `all` can be used to indicate that all data matching the supplied key and belonging to the specified dataflow and provided by any data provider must be returned. - - Examples: - - * `ECB`: Data provided by ECB - * `CH2+NO2`: Data provided by CH2 or NO2 - required: true - schema: - type: string - pattern: '^(([A-Za-z][A-Za-z\d_-]*)(\.[A-Za-z][A-Za-z\d_-]*)*,)?[A-Za-z\d_@$-]+(\+([A-Za-z][A-Za-z\d_-]*(\.[A-Za-z][A-Za-z\d_-]*)*,)?[A-Za-z\d_@$-]+)*$' - context: - in: path - name: context - description: | - The value of this parameter determines the **constraints taken into account** when generating the schema. - - Possible options are: - - * `datastructure`: Constraints attached to the DSD are applied. - * `metadatastructure`: Constraints attached to the MSD are applied. - * `dataflow`: Constraints attached to the dataflow and to the DSD used in the dataflow are applied. - * `metadataflow`: Constraints attached to the metadataflow and to the MSD used in the metadataflow are applied. - * `provisionagreement`: Constraints attached to the provision agreement, as well as to the dataflow or metadafalow used in the agreement and the DSD or MSD used in the dataflow or metadataflow are applied. - required: true - schema: - type: string - enum: [datastructure, metadatastructure, dataflow, metadataflow, provisionagreement] - agencyID: - in: path - name: agencyID - description: The agency maintaining the artefact used to generate the schema to be returned. - required: true - schema: - type: string - pattern: '^[A-Za-z][A-Za-z\d_-]*(\.[A-Za-z][A-Za-z\d_-]*)*$' - resourceID: - in: path - name: resourceID - description: The id of the artefact used to generate the schema to be returned. - required: true - schema: - type: string - pattern: '^[A-Za-z\d_@$-]+$' - version: - in: path - name: version - description: | - The version of the artefact used to generate the schema to be returned. - - The keyword `latest` can be used to return the latest production version of the matching resource. - required: true - schema: - type: string - pattern: '^(latest|[\d]+(\.[\d]+)*)$' - agencies: - in: path - name: agencyID - description: | - The agency maintaining the artefact to be returned. - - It is possible to set more than one agency, using `+` as separator (e.g. BIS+ECB). - - The keyword `all` can be used to indicate that artefacts maintained by any maintenance agency should be returned. - required: true - schema: - type: string - pattern: '^(([A-Za-z][A-Za-z\d_-]*)(\.[A-Za-z][A-Za-z\d_-]*)*,)?[A-Za-z\d_@$-]+(\+([A-Za-z][A-Za-z\d_-]*(\.[A-Za-z][A-Za-z\d_-]*)*,)?[A-Za-z\d_@$-]+)*$' - resourceIDs: - in: path - name: resourceID - description: | - The id of the artefact to be returned. - - It is possible to set more than one id, using `+` as separator (e.g. CL_FREQ+CL_CONF_STATUS). - - The keyword `all` can be used to indicate that any artefact of the specified resource type, {agencyID} and {version} should be returned. - required: true - schema: - type: string - pattern: '^([A-Za-z\d_@$-]+(\+[A-Za-z\d_@$-]+)*)*$' - versions: - in: path - name: version - description: | - The version of the artefact to be returned. - - It is possible to set more than one version, using `+` as separator (e.g. 1.0+2.1). - - The keyword `all` can be used to return all versions of the matching resource. - - The keyword `latest` can be used to return the latest production version of the matching resource. - required: true - schema: - type: string - pattern: '^(all|latest|[\d]+(\.[\d]+)*(\+[\d]+(\.[\d]+)*)*)$' - items: - in: path - name: itemID - description: | - The id of the item to be returned. - - It is possible to set more than one id, using `+` as separator (e.g. A+Q+M). - - The keyword `all` can be used to return all items of the matching resource. - required: true - schema: - type: string - pattern: '^[A-Za-z\d_@$-]+(\.[A-Za-z\d_@$-]+)*(\+[A-Za-z\d_@$-]+(\.[A-Za-z\d_@$-]+)*)*$' - componentID: - in: path - name: componentID - description: | - The id of the Dimension for which to obtain availability information about. Use all to indicate that data availability should be provided for all dimensions. - required: true - schema: - type: string - pattern: '^[A-Za-z][A-Za-z\d_-]*$' - startPeriod: - in: query - name: startPeriod - description: | - The start of the period for which results should be supplied (inclusive). - - Can be expressed using 8601 dates or SDMX reporting periods. - - Examples: - * `2000`: Year (ISO 8601) - * `2000-01`: Month (ISO 8601) - * `2000-01-01`: Date (ISO 8601) - * `2000-Q1`: Quarter (SDMX) - * `2000-W01`: Week (SDMX) - - required: false - schema: - type: string - pattern: '^\d{4}-?((\d{2}(-\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$' - endPeriod: - in: query - name: endPeriod - description: | - The end of the period for which results should be supplied (inclusive). - - Can be expressed using 8601 dates or SDMX reporting periods. - - Examples: - * `2000`: Year (ISO 8601) - * `2000-01`: Month (ISO 8601) - * `2000-01-01`: Date (ISO 8601) - * `2000-S1`: Semester (SDMX) - * `2000-D001`: Day (SDMX) - required: false - schema: - type: string - pattern: '^\d{4}-?((\d{2}(-\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$' - updatedAfter: - in: query - name: updatedAfter - description: | - The last time the query was performed by the client. - - The response should include the latest version of what has changed in the database since that point in time (i.e. additions, revisions or deletions since the last time the query was performed). - required: false - schema: - type: string - format: date-time - firstNObservations: - in: query - name: firstNObservations - description: | - The maximum number of observations to be returned starting from the oldest one - required: false - schema: - type: integer - minimum: 1 - lastNObservations: - in: query - name: lastNObservations - description: | - The maximum number of observations to be returned starting from the most recent one - required: false - schema: - type: integer - minimum: 1 - dimensionAtObservation: - in: query - name: dimensionAtObservation - description: | - Indicates **how the data should be packaged**. - - The options are: - - * `TIME_PERIOD`: A timeseries view - * The ID of any other dimension: A cross-sectional view of the data - * `AllDimensions`: A flat view of the data. - required: false - schema: - type: string - pattern: '^[A-Za-z][A-Za-z\d_-]*$' - default: TIME_PERIOD - detail: - in: query - name: detail - description: | - The **amount of information** to be returned. - - Possible options are: - - * `full`: All data and documentation - * `dataonly`: Everything except attributes - * `serieskeysonly`: The series keys. This is useful to return the series that match a certain query, without returning the actual data (e.g. overview page) - * `nodata`: The series, including attributes and annotations, without observations. - required: false - schema: - type: string - enum: [full, dataonly, serieskeysonly, nodata] - default: full - includeHistory: - in: query - name: includeHistory - description: | - Retrieve **previous versions of the data**. - - When `true`, the response will contain up to two datasets per dissemination, one containing new or updated values and one containing the deleted data (if any). - required: false - schema: - type: boolean - default: false - explicitMeasure: - in: query - name: explicitMeasure - description: | - For cross-sectional data validation, indicates whether observations are strongly typed - required: false - schema: - type: boolean - default: false - structDetail: - in: query - name: detail - description: | - The amount of information to be returned. - - Possible values are: - - * `allstubs`: All artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name - * `referencestubs`: Referenced artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name - * `referencepartial`: Referenced item schemes should only include items used by the artefact to be returned. For example, a concept scheme would only contain the concepts used in a DSD, and its isPartial flag would be set to `true` - * `allcompletestubs`: All artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information - * `referencecompletestubs`: Referenced artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information - * `full`: All available information for all artefacts should be returned - required: false - schema: - type: string - enum: [allstubs, referencestubs, referencepartial, allcompletestubs, referencecompletestubs, full] - default: full - references: - in: query - name: references - description: | - Instructs the web service to return (or not) the artefacts referenced by the artefact to be returned. - - Possible values are: - - * `none`: No references will be returned - * `parents`: Returns the artefacts that use the artefact matching the query - * `parentsandsiblings`: Returns the artefacts that use the artefact matching the query, as well as the artefacts referenced by these artefacts - * `children`: Returns the artefacts referenced by the artefact to be returned - * `descendants`: References of references, up to any level, will be returned - * `all`: The combination of parentsandsiblings and descendants - * In addition, a concrete type of resource may also be used (for example, references=codelist). - required: false - schema: - type: string - enum: [none, parents, parentsandsiblings, children, descendants, all, datastructure, metadatastructure, categoryscheme, conceptscheme, codelist, hierarchicalcodelist, organisationscheme, agencyscheme, dataproviderscheme, dataconsumerscheme, organisationunitscheme, dataflow, metadataflow, reportingtaxonomy, provisionagreement, structureset, process, categorisation, contentconstraint, actualconstraint, allowedconstraint, attachmentconstraint, transformationscheme, rulesetscheme, userdefinedoperatorscheme, customtypescheme, namepersonalisationscheme, namealiasscheme] - default: none - mode: - in: query - name: mode - description: | - Instructs the web service to return a ContentConstraint which defines a Cube Region containing values which will be returned by executing the query (mode="exact") vs a Cube Region showing what values remain valid selections that could be added to the data query (mode="available"). A valid selection is one which results in one or more series existing for the selected value, based on the current data query selection state defined by the current path parameters. - required: false - schema: - type: string - enum: [exact, available] - default: exact - acreferences: - in: query - name: references - description: | - Instructs the web service to return (or not) the artefacts referenced by the ContentConstraint to be returned. - required: false - schema: - type: string - enum: [none, all, datastructure, conceptscheme, codelist, dataproviderscheme, dataflow] - default: none - accept-encoding: - in: header - name: Accept-Encoding - description: | - Specifies whether the response should be compressed and how. - - `identity` (the default) indicates that no compression will be performed. - schema: - type: string - enum: [br, compress, deflate, exi, gzip, identity, pack200-gzip, zstd] - default: identity - accept-language: - in: header - name: Accept-Language - description: | - Specifies the client's preferred language. - schema: - type: string - if-modified-since: - in: header - name: If-Modified-Since - description: | - Instructs to return the content matching the query only if it has changed since the supplied timestamp. - schema: - type: string - format: date-time - - responses: - '200': - description: OK - content: - application/vnd.sdmx.genericdata+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.structurespecificdata+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.generictimeseriesdata+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.structurespecifictimeseriesdata+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.data+csv;version=1.0.0: - schema: - type: string - application/vnd.sdmx.data+json;version=1.0.0: - schema: - type: string - '200-schemas': - description: OK - content: - application/vnd.sdmx.schema+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.structure+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.structure+json;version=1.0.0: - schema: - type: string - '200-struct': - description: OK - content: - application/vnd.sdmx.structure+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.structure+json;version=1.0.0: - schema: - type: string - '304': - description: No changes - '400': - description: Bad syntax - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Not found - '406': - description: Not acceptable - '413': - description: Request entity too large - '414': - description: URI too long - '500': - description: Internal server error - '501': - description: Not implemented - '503': - description: Service unavailable diff --git a/swagger/v1/swagger-static.json b/swagger/v1/swagger-static.json deleted file mode 100644 index 05d84ab..0000000 --- a/swagger/v1/swagger-static.json +++ /dev/null @@ -1,3901 +0,0 @@ -{ - "openapi": "3.0.0", - "info": { - "version": "1.5.0", - "title": "SDMX RESTful API, v1.5.0", - "description": "The SDMX RESTful API, released in September 2020.\n\nFor additional information, check the [official sdmx-rest specification](https://github.com/sdmx-twg/sdmx-rest/tree/master/v2_1/ws/rest/docs) or the [dedicated Wiki](https://github.com/sdmx-twg/sdmx-rest/wiki).\n" - }, - "servers": [ - { - "description": "UBA Data Cube", - "url": "https://daten.uba.de/release/" - } - ], - "paths": { - "/data/{flow}/{key}/{provider}": { - "get": { - "summary": "Get data", - "tags": [ - "Data queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/flow" - }, - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/provider" - }, - { - "$ref": "#/components/parameters/startPeriod" - }, - { - "$ref": "#/components/parameters/endPeriod" - }, - { - "$ref": "#/components/parameters/updatedAfter" - }, - { - "$ref": "#/components/parameters/firstNObservations" - }, - { - "$ref": "#/components/parameters/lastNObservations" - }, - { - "$ref": "#/components/parameters/dimensionAtObservation" - }, - { - "$ref": "#/components/parameters/detail" - }, - { - "$ref": "#/components/parameters/includeHistory" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/availableconstraint/{flow}/{key}/{provider}/{componentID}": { - "get": { - "summary": "Get information about data availability", - "tags": [ - "Data availability queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/flow" - }, - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/provider" - }, - { - "$ref": "#/components/parameters/componentID" - }, - { - "$ref": "#/components/parameters/mode" - }, - { - "$ref": "#/components/parameters/acreferences" - }, - { - "$ref": "#/components/parameters/startPeriod" - }, - { - "$ref": "#/components/parameters/endPeriod" - }, - { - "$ref": "#/components/parameters/updatedAfter" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/datastructure/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get data structures", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/metadatastructure/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get metadata structures", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/dataflow/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get dataflows", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/metadataflow/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get metadadataflows", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/provisionagreement/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get provision agreements", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/structureset/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get structure sets", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/process/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get processes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/categorisation/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get categorisations", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/contentconstraint/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get content constraints", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/actualconstraint/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get actual constraints", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/allowedconstraint/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get allowed constraints", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/attachmentconstraint/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get attachment constraints", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/structure/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get structures", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/conceptscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get concept schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/codelist/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get codelists", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/categoryscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get category schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/hierarchicalcodelist/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get hierarchical codelists", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/organisationscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get organisation schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/agencyscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get agency schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/dataproviderscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get data provider schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/dataconsumerscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get data consumer schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/organisationunitscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get organisation unit schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/transformationscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get transformation schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/rulesetscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get ruleset schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/userdefinedoperatorscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get user defined operator schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/customtypescheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get custom type schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/namepersonalisationscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get name personalisation schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/namealiasscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get name alias schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/conceptscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get concepts", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/codelist/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get codes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/categoryscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get categories", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/hierarchicalcodelist/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get hierarchies", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/organisationscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get organisations", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/agencyscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get agencies", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/dataproviderscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get data providers", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/dataconsumerscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get data consumers", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/organisationunitscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get organisation unit schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/transformationscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get transformation schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/rulesetscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get ruleset schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/userdefinedoperatorscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get user defined operator schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/customtypescheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get custom type schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/namepersonalisationscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get name personalisation schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/namealiasscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get name alias schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/schema/{context}/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get XML schemas", - "tags": [ - "Schema queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/context" - }, - { - "$ref": "#/components/parameters/agencyID" - }, - { - "$ref": "#/components/parameters/resourceID" - }, - { - "$ref": "#/components/parameters/version" - }, - { - "$ref": "#/components/parameters/dimensionAtObservation" - }, - { - "$ref": "#/components/parameters/explicitMeasure" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-schemas" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - } - }, - "components": { - "parameters": { - "flow": { - "in": "path", - "name": "flow", - "description": "The **statistical domain** (aka dataflow) of the data to be returned.\n\nExamples:\n\n* `EXR`: The ID of the domain\n* `ECB,EXR`: The EXR domain, maintained by the ECB\n* `ECB,EXR,1.0`: Version 1.0 of the EXR domain, maintained by the ECB\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z\\d_-]*(\\.[a-zA-Z][a-zA-Z\\d_-]*)*,)?[a-zA-Z\\d_@$-]+(,(latest|(\\d+(\\.\\d+)*)))?$" - } - }, - "key": { - "in": "path", - "name": "key", - "description": "The (possibly partial) **key identifying the data to be returned**. \n\nThe keyword `all` can be used to indicate that all data belonging to the specified dataflow and provided by the specified provider must be returned.\n\nThe examples below are based on the following key: Frequency, Country, Component of inflation, Unit of measure.\n * `M.DE.000000.ANR`: Full key, matching exactly one series, i.e. the monthly (`M`) rates of change (`ANR`) of overall inflation (`000000`) in Germany (`DE`).\n * `A+M.DE.000000.ANR`: Retrieves both annual and monthly data (`A+M`), matching exactly two series\n * `A+M..000000.ANR`: The second dimension is wildcarded, and it wil therefore match the annual and monthly rates of change of overall inflation in any country.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^([\\.A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$" - } - }, - "provider": { - "in": "path", - "name": "provider", - "description": "The **provider of the data** to be retrieved. \n\nThe keyword `all` can be used to indicate that all data matching the supplied key and belonging to the specified dataflow and provided by any data provider must be returned.\n\nExamples:\n\n* `ECB`: Data provided by ECB\n* `CH2+NO2`: Data provided by CH2 or NO2\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$" - } - }, - "context": { - "in": "path", - "name": "context", - "description": "The value of this parameter determines the **constraints taken into account** when generating the schema.\n\nPossible options are:\n\n* `datastructure`: Constraints attached to the DSD are applied.\n* `metadatastructure`: Constraints attached to the MSD are applied. \n* `dataflow`: Constraints attached to the dataflow and to the DSD used in the dataflow are applied.\n* `metadataflow`: Constraints attached to the metadataflow and to the MSD used in the metadataflow are applied. \n* `provisionagreement`: Constraints attached to the provision agreement, as well as to the dataflow or metadafalow used in the agreement and the DSD or MSD used in the dataflow or metadataflow are applied.\n", - "required": true, - "schema": { - "type": "string", - "enum": [ - "datastructure", - "metadatastructure", - "dataflow", - "metadataflow", - "provisionagreement" - ] - } - }, - "agencyID": { - "in": "path", - "name": "agencyID", - "description": "The agency maintaining the artefact used to generate the schema to be returned.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*$" - } - }, - "resourceID": { - "in": "path", - "name": "resourceID", - "description": "The id of the artefact used to generate the schema to be returned.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[A-Za-z\\d_@$-]+$" - } - }, - "version": { - "in": "path", - "name": "version", - "description": "The version of the artefact used to generate the schema to be returned.\n\nThe keyword `latest` can be used to return the latest production version of the matching resource.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^(latest|[\\d]+(\\.[\\d]+)*)$" - } - }, - "agencies": { - "in": "path", - "name": "agencyID", - "description": "The agency maintaining the artefact to be returned. \n\nIt is possible to set more than one agency, using `+` as separator (e.g. BIS+ECB).\n\nThe keyword `all` can be used to indicate that artefacts maintained by any maintenance agency should be returned.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$" - } - }, - "resourceIDs": { - "in": "path", - "name": "resourceID", - "description": "The id of the artefact to be returned.\n\nIt is possible to set more than one id, using `+` as separator (e.g. CL_FREQ+CL_CONF_STATUS).\n\nThe keyword `all` can be used to indicate that any artefact of the specified resource type, {agencyID} and {version} should be returned. \n", - "required": true, - "schema": { - "type": "string", - "pattern": "^([A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$" - } - }, - "versions": { - "in": "path", - "name": "version", - "description": "The version of the artefact to be returned. \n\nIt is possible to set more than one version, using `+` as separator (e.g. 1.0+2.1).\n\nThe keyword `all` can be used to return all versions of the matching resource.\n\nThe keyword `latest` can be used to return the latest production version of the matching resource.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^(all|latest|[\\d]+(\\.[\\d]+)*(\\+[\\d]+(\\.[\\d]+)*)*)$" - } - }, - "items": { - "in": "path", - "name": "itemID", - "description": "The id of the item to be returned. \n\nIt is possible to set more than one id, using `+` as separator (e.g. A+Q+M).\n\nThe keyword `all` can be used to return all items of the matching resource.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^[A-Za-z\\d_@$-]+(\\.[A-Za-z\\d_@$-]+)*(\\+[A-Za-z\\d_@$-]+(\\.[A-Za-z\\d_@$-]+)*)*$" - } - }, - "componentID": { - "in": "path", - "name": "componentID", - "description": "The id of the Dimension for which to obtain availability information about. Use all to indicate that data availability should be provided for all dimensions.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z\\d_-]*$" - } - }, - "startPeriod": { - "in": "query", - "name": "startPeriod", - "description": "The start of the period for which results should be supplied (inclusive).\n\nCan be expressed using 8601 dates or SDMX reporting periods. \n\nExamples:\n* `2000`: Year (ISO 8601)\n* `2000-01`: Month (ISO 8601)\n* `2000-01-01`: Date (ISO 8601)\n* `2000-Q1`: Quarter (SDMX)\n* `2000-W01`: Week (SDMX)\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$" - } - }, - "endPeriod": { - "in": "query", - "name": "endPeriod", - "description": "The end of the period for which results should be supplied (inclusive).\n\nCan be expressed using 8601 dates or SDMX reporting periods. \n\nExamples:\n* `2000`: Year (ISO 8601)\n* `2000-01`: Month (ISO 8601)\n* `2000-01-01`: Date (ISO 8601)\n* `2000-S1`: Semester (SDMX)\n* `2000-D001`: Day (SDMX)\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$" - } - }, - "updatedAfter": { - "in": "query", - "name": "updatedAfter", - "description": "The last time the query was performed by the client. \n\nThe response should include the latest version of what has changed in the database since that point in time (i.e. additions, revisions or deletions since the last time the query was performed).\n", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - "firstNObservations": { - "in": "query", - "name": "firstNObservations", - "description": "The maximum number of observations to be returned starting from the oldest one\n", - "required": false, - "schema": { - "type": "integer", - "minimum": 1 - } - }, - "lastNObservations": { - "in": "query", - "name": "lastNObservations", - "description": "The maximum number of observations to be returned starting from the most recent one\n", - "required": false, - "schema": { - "type": "integer", - "minimum": 1 - } - }, - "dimensionAtObservation": { - "in": "query", - "name": "dimensionAtObservation", - "description": "Indicates **how the data should be packaged**. \n\nThe options are:\n\n* `TIME_PERIOD`: A timeseries view\n* The ID of any other dimension: A cross-sectional view of the data \n* `AllDimensions`: A flat view of the data.\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z\\d_-]*$", - "default": "TIME_PERIOD" - } - }, - "detail": { - "in": "query", - "name": "detail", - "description": "The **amount of information** to be returned. \n\nPossible options are: \n\n* `full`: All data and documentation\n* `dataonly`: Everything except attributes\n* `serieskeysonly`: The series keys. This is useful to return the series that match a certain query, without returning the actual data (e.g. overview page)\n* `nodata`: The series, including attributes and annotations, without observations.\n", - "required": false, - "schema": { - "type": "string", - "enum": [ - "full", - "dataonly", - "serieskeysonly", - "nodata" - ], - "default": "full" - } - }, - "includeHistory": { - "in": "query", - "name": "includeHistory", - "description": "Retrieve **previous versions of the data**. \n\nWhen `true`, the response will contain up to two datasets per dissemination, one containing new or updated values and one containing the deleted data (if any). \n", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - "explicitMeasure": { - "in": "query", - "name": "explicitMeasure", - "description": "For cross-sectional data validation, indicates whether observations are strongly typed \n", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - "structDetail": { - "in": "query", - "name": "detail", - "description": "The amount of information to be returned. \n\nPossible values are: \n\n* `allstubs`: All artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name\n* `referencestubs`: Referenced artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name\n* `referencepartial`: Referenced item schemes should only include items used by the artefact to be returned. For example, a concept scheme would only contain the concepts used in a DSD, and its isPartial flag would be set to `true`\n* `allcompletestubs`: All artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information\n* `referencecompletestubs`: Referenced artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information\n* `full`: All available information for all artefacts should be returned\n", - "required": false, - "schema": { - "type": "string", - "enum": [ - "allstubs", - "referencestubs", - "referencepartial", - "allcompletestubs", - "referencecompletestubs", - "full" - ], - "default": "full" - } - }, - "references": { - "in": "query", - "name": "references", - "description": "Instructs the web service to return (or not) the artefacts referenced by the artefact to be returned.\n\nPossible values are: \n\n* `none`: No references will be returned\n* `parents`: Returns the artefacts that use the artefact matching the query\n* `parentsandsiblings`: Returns the artefacts that use the artefact matching the query, as well as the artefacts referenced by these artefacts\n* `children`: Returns the artefacts referenced by the artefact to be returned\n* `descendants`: References of references, up to any level, will be returned\n* `all`: The combination of parentsandsiblings and descendants\n* In addition, a concrete type of resource may also be used (for example, references=codelist).\n", - "required": false, - "schema": { - "type": "string", - "enum": [ - "none", - "parents", - "parentsandsiblings", - "children", - "descendants", - "all", - "datastructure", - "metadatastructure", - "categoryscheme", - "conceptscheme", - "codelist", - "hierarchicalcodelist", - "organisationscheme", - "agencyscheme", - "dataproviderscheme", - "dataconsumerscheme", - "organisationunitscheme", - "dataflow", - "metadataflow", - "reportingtaxonomy", - "provisionagreement", - "structureset", - "process", - "categorisation", - "contentconstraint", - "actualconstraint", - "allowedconstraint", - "attachmentconstraint", - "transformationscheme", - "rulesetscheme", - "userdefinedoperatorscheme", - "customtypescheme", - "namepersonalisationscheme", - "namealiasscheme" - ], - "default": "none" - } - }, - "mode": { - "in": "query", - "name": "mode", - "description": "Instructs the web service to return a ContentConstraint which defines a Cube Region containing values which will be returned by executing the query (mode=\"exact\") vs a Cube Region showing what values remain valid selections that could be added to the data query (mode=\"available\"). A valid selection is one which results in one or more series existing for the selected value, based on the current data query selection state defined by the current path parameters.\n", - "required": false, - "schema": { - "type": "string", - "enum": [ - "exact", - "available" - ], - "default": "exact" - } - }, - "acreferences": { - "in": "query", - "name": "references", - "description": "Instructs the web service to return (or not) the artefacts referenced by the ContentConstraint to be returned.\n", - "required": false, - "schema": { - "type": "string", - "enum": [ - "none", - "all", - "datastructure", - "conceptscheme", - "codelist", - "dataproviderscheme", - "dataflow" - ], - "default": "none" - } - }, - "accept-encoding": { - "in": "header", - "name": "Accept-Encoding", - "description": "Specifies whether the response should be compressed and how. \n\n`identity` (the default) indicates that no compression will be performed.\n", - "schema": { - "type": "string", - "enum": [ - "br", - "compress", - "deflate", - "exi", - "gzip", - "identity", - "pack200-gzip", - "zstd" - ], - "default": "identity" - } - }, - "accept-language": { - "in": "header", - "name": "Accept-Language", - "description": "Specifies the client's preferred language. \n", - "schema": { - "type": "string" - } - }, - "if-modified-since": { - "in": "header", - "name": "If-Modified-Since", - "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp. \n", - "schema": { - "type": "string", - "format": "date-time" - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/vnd.sdmx.genericdata+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.structurespecificdata+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.generictimeseriesdata+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.structurespecifictimeseriesdata+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.data+csv;version=1.0.0": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.data+json;version=1.0.0": { - "schema": { - "type": "string" - } - } - } - }, - "304": { - "description": "No changes" - }, - "400": { - "description": "Bad syntax" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Not found" - }, - "406": { - "description": "Not acceptable" - }, - "413": { - "description": "Request entity too large" - }, - "414": { - "description": "URI too long" - }, - "500": { - "description": "Internal server error" - }, - "501": { - "description": "Not implemented" - }, - "503": { - "description": "Service unavailable" - }, - "200-schemas": { - "description": "OK", - "content": { - "application/vnd.sdmx.schema+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.structure+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.structure+json;version=1.0.0": { - "schema": { - "type": "string" - } - } - } - }, - "200-struct": { - "description": "OK", - "content": { - "application/vnd.sdmx.structure+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.structure+json;version=1.0.0": { - "schema": { - "type": "string" - } - } - } - } - } - } -} diff --git a/swagger/v2/sdmx-rest.yaml b/swagger/v2/sdmx-rest.yaml deleted file mode 100644 index a3646d6..0000000 --- a/swagger/v2/sdmx-rest.yaml +++ /dev/null @@ -1,820 +0,0 @@ -openapi: 3.0.0 -info: - version: '2.0.0' - title: 'SDMX RESTful API, v2.0.0' - description: | - The RESTful API for SDMX 3.0. - - For additional information, check the [documentation](https://github.com/sdmx-twg/sdmx-rest/tree/develop/v2_1/ws/rest/docs). -servers: - - description: UBA Data Cube - url: https://daten.uba.de/release/ - -x-commons: - common_responses: &common_responses - '304': - $ref: '#/components/responses/304' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '413': - $ref: '#/components/responses/413' - '414': - $ref: '#/components/responses/414' - '500': - $ref: '#/components/responses/500' - '501': - $ref: '#/components/responses/501' - '503': - $ref: '#/components/responses/503' - -paths: - /data/{context}/{agencyID}/{resourceID}/{version}/{key}: - get: - summary: 'Data queries' - tags: - - Data queries - description: | - Data queries allow **retrieving statistical data**. - - Entire datasets can be retrieved or individual observations, or anything in between, using filters on dimensions (including time), attributes and/or measures. - - All data matching a query can be retrieved or only the data that has changed since the last time the same query was performed. - - Using the _includeHistory_ parameter, it is also possible to retrieve previous versions of the data. - - Last but not least, the data retrieved can be packaged in different ways (as time series, cross-sections or as a table), in a variety of formats (JSON, XML, CSV, etc.). - parameters: - - $ref: '#/components/parameters/dataContext' - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/key' - - $ref: '#/components/parameters/c' - - $ref: '#/components/parameters/updatedAfter' - - $ref: '#/components/parameters/firstNObservations' - - $ref: '#/components/parameters/lastNObservations' - - $ref: '#/components/parameters/dimensionAtObservation' - - $ref: '#/components/parameters/attributes' - - $ref: '#/components/parameters/measures' - - $ref: '#/components/parameters/includeHistory' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - <<: *common_responses - '200': - $ref: '#/components/responses/200' - - /availability/{context}/{agencyID}/{resourceID}/{version}/{key}/{componentID}: - get: - summary: 'Data availability queries' - tags: - - Data queries - description: | - See which data would match a query, without actually retrieving these data. - - This can be used, for example, to build a data query form that enables users of the UI to create a data query by selecting dimension values. - For example the user is able to click 'Reporting Country' and then select the codes 'United Kingdom', 'Greece', and 'Switzerland'. - - The query returns a `Constraint`, i.e. structural metadata, and is therefore similar to the other structural metadata queries but - the query itself is more akin to a data query. - parameters: - - $ref: '#/components/parameters/dataContext' - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/key' - - $ref: '#/components/parameters/componentID' - - $ref: '#/components/parameters/c' - - $ref: '#/components/parameters/mode' - - $ref: '#/components/parameters/acreferences' - - $ref: '#/components/parameters/updatedAfter' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - <<: *common_responses - '200': - $ref: '#/components/responses/200-struct' - - /schema/{context}/{agencyID}/{resourceID}/{version}: - get: - summary: 'Data validity queries' - description: | - Data validity queries (aka schema queries) allow retrieving **the definition of data validity for a certain context**. - - The service must take into account the constraints that apply within that context (e.g. dataflow). - - This is typically used for **validation and/or communication purposes**, for example as a way to inform providers about the data they are expected to report. - tags: - - Data queries - parameters: - - $ref: '#/components/parameters/context' - - $ref: '#/components/parameters/agencyID' - - $ref: '#/components/parameters/resourceID' - - $ref: '#/components/parameters/version' - - $ref: '#/components/parameters/dimensionAtObservation' - - $ref: '#/components/parameters/explicitMeasure' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/if-modified-since' - responses: - <<: *common_responses - '200': - $ref: '#/components/responses/200-schemas' - - /structure/{structureType}/{agencyID}/{resourceID}/{version}: - get: - summary: 'Structure queries' - tags: - - Structure queries - description: | - Structure queries allow **retrieving structural metadata**. - - Structure queries in SDMX allow you to retrieve structural metadata at various levels of granularity, from all structural metadata available in the source to a single code from a particular version of a particular codelist maintained by a particular agency. - parameters: - - $ref: '#/components/parameters/structureType' - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - <<: *common_responses - '200': - $ref: '#/components/responses/200-struct' - - /structure/{itemSchemeType}/{agencyID}/{resourceID}/{version}/{itemID}: - get: - summary: 'Item Scheme queries' - tags: - - Structure queries - description: | - Item queries extend structure queries by allowing to retrieve items in item schemes such as particular codes in a codelist. - parameters: - - $ref: '#/components/parameters/itemSchemeType' - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/items' - - $ref: '#/components/parameters/references' - - $ref: '#/components/parameters/structDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - <<: *common_responses - '200': - $ref: '#/components/responses/200-struct' - - /metadata/structure/{structureType}/{agencyID}/{resourceID}/{version}: - get: - summary: 'Metadata queries (by structure)' - tags: - - Reference metadata queries - description: | - These queries enable clients to request all metadata sets which are reported against one or more structures. - - As such the syntax for defining which structures to find metadata for follows the same syntax as the structure queries. - parameters: - - $ref: '#/components/parameters/structureType' - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/metaDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - <<: *common_responses - '200': - $ref: '#/components/responses/200-meta' - - /metadata/metadataflow/{agencyID}/{resourceID}/{version}/{providerID}: - get: - summary: 'Metadata queries (by metadataflow)' - tags: - - Reference metadata queries - description: | - These queries enable clients to find metadatasets by the collection (metadataflow), optionally filtered by the metadata provider. - parameters: - - $ref: '#/components/parameters/agencies' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/providers' - - $ref: '#/components/parameters/metaDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - <<: *common_responses - '200': - $ref: '#/components/responses/200-meta' - - /metadata/metadataset/{providerID}/{resourceID}/{version}: - get: - summary: 'Metadata queries (by metadatasets)' - tags: - - Reference metadata queries - description: | - These queries enable clients to find metadatasets by the identification of the metadataset, enabling clients to checkout specific reports. - parameters: - - $ref: '#/components/parameters/providers' - - $ref: '#/components/parameters/resourceIDs' - - $ref: '#/components/parameters/versions' - - $ref: '#/components/parameters/metaDetail' - - $ref: '#/components/parameters/accept-encoding' - - $ref: '#/components/parameters/accept-language' - - $ref: '#/components/parameters/if-modified-since' - responses: - <<: *common_responses - '200': - $ref: '#/components/responses/200-meta' -components: - parameters: - dataContext: - in: path - name: context - description: The context for data retrieval. All possible contexts can be selected using `*`. - required: true - schema: - type: string - enum: [datastructure, dataflow, provisionagreement, "*"] - key: - in: path - name: key - description: | - The combination of dimension values identifying series or slices of the cube (for example `D.USD.EUR.SP00.A`). - - Multiple values are possible. Wildcards are supported using `*` (`D.*.EUR.SP00.A`). - required: true - schema: - type: array - items: - type: string - pattern: '^(\*|\S+)$' - style: simple - structureType: - in: path - name: structureType - description: The type of structural metadata (e.g. codelist, dataflow, etc.) - required: true - schema: - type: string - enum: - [ - datastructure, - metadatastructure, - dataflow, - metadataflow, - provisionagreement, - structureset, - process, - categorisation, - dataconstraint, - metadataconstraint, - conceptscheme, - codelist, - categoryscheme, - hierarchy, - hierarchyassociation, - agencyscheme, - dataproviderscheme, - dataconsumerscheme, - organisationunitscheme, - transformationscheme, - rulesetscheme, - userdefinedoperatorscheme, - customtypescheme, - namepersonalisationscheme, - vtlmappingscheme, - valuelist, - structuremap, - representationmap, - conceptschememap, - categoryschememap, - organisationschememap, - reportingtaxonomymap, - "*", - ] - itemSchemeType: - in: path - name: itemSchemeType - description: The type of item scheme (e.g. codelist, agencyscheme, etc.) - required: true - schema: - type: string - enum: - [ - conceptscheme, - codelist, - categoryscheme, - agencyscheme, - dataproviderscheme, - dataconsumerscheme, - organisationunitscheme, - transformationscheme, - rulesetscheme, - userdefinedoperatorscheme, - customtypescheme, - namepersonalisationscheme, - vtlmappingscheme, - valuelist, - "*", - ] - context: - in: path - name: context - description: The context for data validity retrieval. - required: true - schema: - type: string - enum: - [ - datastructure, - metadatastructure, - dataflow, - metadataflow, - provisionagreement, - ] - agencyID: - in: path - name: agencyID - description: The maintainer of the artefact. - required: true - schema: - type: string - pattern: '^[A-Za-z][A-Za-z\d_-]*(\.[A-Za-z][A-Za-z\d_-]*)*$' - resourceID: - in: path - name: resourceID - description: The artefact ID. - required: true - schema: - type: string - pattern: '^[A-Za-z\d_@$-]+$' - version: - in: path - name: version - description: | - The version of the artefact. - - `+` can be used to retrieve the latest stable version. - - `~` can be used to retrieve the latest version, regardless of its status (stable, draft, etc.). - - required: true - schema: - type: string - pattern: '^\+|~|(0|[1-9]\d*[\+~]?|[\+~]?)\.(0|[1-9]\d*[\+~]?|[\+~]?)\.?(0|[1-9]\d*[\+~]?|[\+~]?)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$' - agencies: - in: path - name: agencyID - description: | - The maintainer(s) of the artefacts. - - Multiple values are possible and `*` can be used as shortcut to select all available maintainers. - required: true - schema: - type: array - items: - type: string - pattern: '^\*|[A-Za-z][A-Za-z\d_-]*(\.[A-Za-z][A-Za-z\d_-]*)*$' - style: simple - providers: - in: path - name: providerID - description: | - The provider of metadata. - - Multiple values are possible and `*` can be used as shortcut to select all available providers. - required: true - schema: - type: array - items: - type: string - pattern: '^\*|[A-Za-z][A-Za-z\d_-]*(\.[A-Za-z][A-Za-z\d_-]*)*$' - style: simple - resourceIDs: - in: path - name: resourceID - description: | - The artefact ID(s). - - Multiple values are possible and `*` can be used as shortcut to select all available artefacts. - required: true - schema: - type: array - items: - type: string - pattern: '^\*|[A-Za-z\d_@$-]+$' - style: simple - versions: - in: path - name: version - description: | - The version(s) of the artefact. - - Multiple values are possible and `*` can be used as shortcut to select all available artefacts. - - `+` can be used to retrieve the latest stable version. - - `~` can be used to retrieve the latest version, regardless of its status (stable, draft, etc.). - required: true - schema: - type: array - items: - type: string - pattern: '^(\*\+|~|\*|(0|[1-9]\d*[\+\*~]?|[\+\*~]?)\.(0|[1-9]\d*[\+\*~]?|[\+\*~]?)\.?(0|[1-9]\d*[\+\*~]?|[\+\*~]?)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)$' - style: simple - items: - in: path - name: itemID - description: | - The id of the item to be returned. - - Multiple values are possible and `*` can be used as shortcut to select all items. - required: true - schema: - type: array - items: - type: string - style: simple - componentID: - in: path - name: componentID - description: | - The ID of the dimension for which to obtain availability information. - - Multiple values are possible and `*` can be used as shortcut to select all available dimensions. - required: true - schema: - type: array - items: - type: string - pattern: '^\*|[A-Za-z][A-Za-z\d_-]*$' - style: simple - c: - in: query - name: c - description: | - Filter data by component value (e.g. c[FREQ]=A). - - Multiple values are supported. - - In addition, operators may be used: - - Operator | Meaning | Note - -- | -- | -- - eq | Equals | Default if no operator is specified and there is only one value (e.g. `c[FREQ]=M` is equivalent to `c[FREQ]=eq:M`) - ne | Not equal to | - lt | Less than | - le | Less than or equal to | - gt | Greater than | - ge | Greater than or equal to | - co | Contains | - nc | Does not contain | - sw | Starts with | - ew | Ends with | - - Operators appear as prefix to the component value(s) and are separated from it by a `:` (e.g. `c[TIME_PERIOD]=ge:2020-01+le:2020-12`). - required: false - schema: - type: object - style: deepObject - explode: true - updatedAfter: - in: query - name: updatedAfter - description: | - The last time the query was performed by the client. - - If this parameter is used, the returned message should only include the dimension values for the data that have changed since that point in time (updates and revisions). - required: false - schema: - type: string - format: date-time - firstNObservations: - in: query - name: firstNObservations - description: The maximum number of observations to be returned for each of the matching series, starting from the first observation. - required: false - schema: - type: integer - minimum: 1 - lastNObservations: - in: query - name: lastNObservations - description: The maximum number of observations to be returned for each of the matching series, counting back from the most recent observation. - required: false - schema: - type: integer - minimum: 1 - dimensionAtObservation: - in: query - name: dimensionAtObservation - description: | - The ID of the dimension to be attached at the observation level. - - This parameter allows the client to indicate how the data should be packaged by the service. - required: false - schema: - type: string - pattern: '^[A-Za-z][A-Za-z\d_-]*$' - attributes: - in: query - name: attributes - description: | - The attributes to be returned. - - For example, it is possible to instruct the web service to return data only (i.e. no attributes). - required: false - schema: - type: array - items: - type: string - style: form - explode: false - measures: - in: query - name: measures - description: The measures to be returned. - required: false - schema: - type: array - items: - type: string - style: form - explode: false - includeHistory: - in: query - name: includeHistory - description: | - This attribute allows retrieving previous versions of the data, as they were disseminated in the past (*history* or *timeline* functionality). - required: false - schema: - type: boolean - default: false - explicitMeasure: - in: query - name: explicitMeasure - description: For cross-sectional data validation, indicates whether observations are strongly typed. - required: false - schema: - type: boolean - default: false - structDetail: - in: query - name: detail - description: The desired amount of information to be returned. - required: false - schema: - type: string - enum: - [ - full, - allstubs, - referencestubs, - allcompletestubs, - referencecompletestubs, - referencepartial, - raw - ] - default: full - metaDetail: - in: query - name: detail - description: The amount of information to be returned. - required: false - schema: - type: string - enum: [allstubs, full] - default: full - references: - in: query - name: references - description: | - Instructs the web service to return (or not) the artefacts referenced by the artefact to be returned (for example, the code lists and concepts used by the data structure definition matching the query), - as well as the artefacts that use the matching artefact (for example, the dataflows that use the data structure definition matching the query). - required: false - schema: - type: array - items: - type: string - enum: - [ - none, - parents, - parentsandsiblings, - ancestors, - children, - descendants, - all, - datastructure, - metadatastructure, - categoryscheme, - conceptscheme, - codelist, - hierarchy, - hierarchyassociation, - agencyscheme, - dataproviderscheme, - dataconsumerscheme, - organisationunitscheme, - dataflow, - metadataflow, - reportingtaxonomy, - provisionagreement, - structureset, - process, - categorisation, - dataconstraint, - metadataconstraint, - transformationscheme, - rulesetscheme, - userdefinedoperatorscheme, - customtypescheme, - namepersonalisationscheme, - namealiasscheme, - valuelist, - structuremap, - representationmap, - conceptschememap, - categoryschememap, - organisationschememap, - reportingtaxonomymap - ] - default: none - style: form - explode: false - mode: - in: query - name: mode - description: | - Instructs the web service to return a ContentConstraint which defines a Cube Region containing values which will be returned by executing the query (`exact`) vs a Cube Region showing what values remain valid selections that could be added to the data query (`available`). - required: false - schema: - type: string - enum: [exact, available] - default: exact - acreferences: - in: query - name: references - description: | - Instructs the web service to return (or not) the artefacts referenced by the ContentConstraint to be returned. - - Multiple values are supported. - required: false - schema: - type: array - items: - type: string - enum: - [ - none, - all, - datastructure, - conceptscheme, - codelist, - dataproviderscheme, - dataflow, - ] - default: none - style: form - explode: false - accept-encoding: - in: header - name: Accept-Encoding - schema: - type: string - enum: [br, compress, deflate, exi, gzip, identity, pack200-gzip, zstd] - default: identity - accept-language: - in: header - name: Accept-Language - schema: - type: string - if-modified-since: - in: header - name: If-Modified-Since - schema: - type: string - format: date-time - - responses: - "200": - description: OK - content: - application/vnd.sdmx.data+json;version=2.0.0: - schema: - type: string - application/vnd.sdmx.data+csv;version=2.0.0: - schema: - type: string - application/vnd.sdmx.data+xml;version=3.0.0: - schema: - type: string - application/vnd.sdmx.genericdata+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.structurespecificdata+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.generictimeseriesdata+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.structurespecifictimeseriesdata+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.data+csv;version=1.0.0: - schema: - type: string - application/vnd.sdmx.data+json;version=1.0.0: - schema: - type: string - "200-schemas": - description: OK - content: - application/vnd.sdmx.schema+xml;version=3.0.0: - schema: - type: string - application/vnd.sdmx.structure+xml;version=3.0.0: - schema: - type: string - application/vnd.sdmx.structure+json;version=2.0.0: - schema: - type: string - application/vnd.sdmx.schema+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.structure+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.structure+json;version=1.0.0: - schema: - type: string - "200-struct": - description: OK - content: - application/vnd.sdmx.structure+xml;version=3.0.0: - schema: - type: string - application/vnd.sdmx.structure+json;version=2.0.0: - schema: - type: string - application/vnd.sdmx.structure+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.structure+json;version=1.0.0: - schema: - type: string - "200-meta": - description: OK - content: - application/vnd.sdmx.metadata+json;version=2.0.0: - schema: - type: string - application/vnd.sdmx.metadata+xml;version=3.0.0: - schema: - type: string - application/vnd.sdmx.metadata+csv;version=1.0.0: - schema: - type: string - application/vnd.sdmx.genericmetadata+xml;version=2.1: - schema: - type: string - application/vnd.sdmx.structurespecificmetadata+xml;version=2.1: - schema: - type: string - "304": - description: No changes - "400": - description: Bad syntax - "401": - description: Unauthorized - "403": - description: Forbidden - "404": - description: Not found - "406": - description: Not acceptable - "413": - description: Request entity too large - "414": - description: URI too long - "500": - description: Internal server error - "501": - description: Not implemented - "503": - description: Service unavailable diff --git a/swagger/v2/swagger-static.json b/swagger/v2/swagger-static.json deleted file mode 100644 index 05d84ab..0000000 --- a/swagger/v2/swagger-static.json +++ /dev/null @@ -1,3901 +0,0 @@ -{ - "openapi": "3.0.0", - "info": { - "version": "1.5.0", - "title": "SDMX RESTful API, v1.5.0", - "description": "The SDMX RESTful API, released in September 2020.\n\nFor additional information, check the [official sdmx-rest specification](https://github.com/sdmx-twg/sdmx-rest/tree/master/v2_1/ws/rest/docs) or the [dedicated Wiki](https://github.com/sdmx-twg/sdmx-rest/wiki).\n" - }, - "servers": [ - { - "description": "UBA Data Cube", - "url": "https://daten.uba.de/release/" - } - ], - "paths": { - "/data/{flow}/{key}/{provider}": { - "get": { - "summary": "Get data", - "tags": [ - "Data queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/flow" - }, - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/provider" - }, - { - "$ref": "#/components/parameters/startPeriod" - }, - { - "$ref": "#/components/parameters/endPeriod" - }, - { - "$ref": "#/components/parameters/updatedAfter" - }, - { - "$ref": "#/components/parameters/firstNObservations" - }, - { - "$ref": "#/components/parameters/lastNObservations" - }, - { - "$ref": "#/components/parameters/dimensionAtObservation" - }, - { - "$ref": "#/components/parameters/detail" - }, - { - "$ref": "#/components/parameters/includeHistory" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/availableconstraint/{flow}/{key}/{provider}/{componentID}": { - "get": { - "summary": "Get information about data availability", - "tags": [ - "Data availability queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/flow" - }, - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/provider" - }, - { - "$ref": "#/components/parameters/componentID" - }, - { - "$ref": "#/components/parameters/mode" - }, - { - "$ref": "#/components/parameters/acreferences" - }, - { - "$ref": "#/components/parameters/startPeriod" - }, - { - "$ref": "#/components/parameters/endPeriod" - }, - { - "$ref": "#/components/parameters/updatedAfter" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/datastructure/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get data structures", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/metadatastructure/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get metadata structures", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/dataflow/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get dataflows", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/metadataflow/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get metadadataflows", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/provisionagreement/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get provision agreements", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/structureset/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get structure sets", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/process/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get processes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/categorisation/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get categorisations", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/contentconstraint/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get content constraints", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/actualconstraint/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get actual constraints", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/allowedconstraint/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get allowed constraints", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/attachmentconstraint/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get attachment constraints", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/structure/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get structures", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/conceptscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get concept schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/codelist/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get codelists", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/categoryscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get category schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/hierarchicalcodelist/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get hierarchical codelists", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/organisationscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get organisation schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/agencyscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get agency schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/dataproviderscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get data provider schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/dataconsumerscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get data consumer schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/organisationunitscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get organisation unit schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/transformationscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get transformation schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/rulesetscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get ruleset schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/userdefinedoperatorscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get user defined operator schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/customtypescheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get custom type schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/namepersonalisationscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get name personalisation schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/namealiasscheme/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get name alias schemes", - "tags": [ - "Structure queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/conceptscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get concepts", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/codelist/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get codes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/categoryscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get categories", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/hierarchicalcodelist/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get hierarchies", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/organisationscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get organisations", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/agencyscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get agencies", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/dataproviderscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get data providers", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/dataconsumerscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get data consumers", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/organisationunitscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get organisation unit schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - }, - "/transformationscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get transformation schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/rulesetscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get ruleset schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/userdefinedoperatorscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get user defined operator schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/customtypescheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get custom type schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/namepersonalisationscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get name personalisation schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/namealiasscheme/{agencyID}/{resourceID}/{version}/{itemID}": { - "get": { - "summary": "Get name alias schemes", - "tags": [ - "Item queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/agencies" - }, - { - "$ref": "#/components/parameters/resourceIDs" - }, - { - "$ref": "#/components/parameters/versions" - }, - { - "$ref": "#/components/parameters/items" - }, - { - "$ref": "#/components/parameters/references" - }, - { - "$ref": "#/components/parameters/structDetail" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/accept-language" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-struct" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "413": { - "$ref": "#/components/responses/413" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - }, - "510": { - "$ref": "#/components/responses/510" - } - } - } - }, - "/schema/{context}/{agencyID}/{resourceID}/{version}": { - "get": { - "summary": "Get XML schemas", - "tags": [ - "Schema queries" - ], - "parameters": [ - { - "$ref": "#/components/parameters/context" - }, - { - "$ref": "#/components/parameters/agencyID" - }, - { - "$ref": "#/components/parameters/resourceID" - }, - { - "$ref": "#/components/parameters/version" - }, - { - "$ref": "#/components/parameters/dimensionAtObservation" - }, - { - "$ref": "#/components/parameters/explicitMeasure" - }, - { - "$ref": "#/components/parameters/accept-encoding" - }, - { - "$ref": "#/components/parameters/if-modified-since" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/200-schemas" - }, - "304": { - "$ref": "#/components/responses/304" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "406": { - "$ref": "#/components/responses/406" - }, - "414": { - "$ref": "#/components/responses/414" - }, - "500": { - "$ref": "#/components/responses/500" - }, - "501": { - "$ref": "#/components/responses/501" - }, - "503": { - "$ref": "#/components/responses/503" - } - } - } - } - }, - "components": { - "parameters": { - "flow": { - "in": "path", - "name": "flow", - "description": "The **statistical domain** (aka dataflow) of the data to be returned.\n\nExamples:\n\n* `EXR`: The ID of the domain\n* `ECB,EXR`: The EXR domain, maintained by the ECB\n* `ECB,EXR,1.0`: Version 1.0 of the EXR domain, maintained by the ECB\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z\\d_-]*(\\.[a-zA-Z][a-zA-Z\\d_-]*)*,)?[a-zA-Z\\d_@$-]+(,(latest|(\\d+(\\.\\d+)*)))?$" - } - }, - "key": { - "in": "path", - "name": "key", - "description": "The (possibly partial) **key identifying the data to be returned**. \n\nThe keyword `all` can be used to indicate that all data belonging to the specified dataflow and provided by the specified provider must be returned.\n\nThe examples below are based on the following key: Frequency, Country, Component of inflation, Unit of measure.\n * `M.DE.000000.ANR`: Full key, matching exactly one series, i.e. the monthly (`M`) rates of change (`ANR`) of overall inflation (`000000`) in Germany (`DE`).\n * `A+M.DE.000000.ANR`: Retrieves both annual and monthly data (`A+M`), matching exactly two series\n * `A+M..000000.ANR`: The second dimension is wildcarded, and it wil therefore match the annual and monthly rates of change of overall inflation in any country.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^([\\.A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$" - } - }, - "provider": { - "in": "path", - "name": "provider", - "description": "The **provider of the data** to be retrieved. \n\nThe keyword `all` can be used to indicate that all data matching the supplied key and belonging to the specified dataflow and provided by any data provider must be returned.\n\nExamples:\n\n* `ECB`: Data provided by ECB\n* `CH2+NO2`: Data provided by CH2 or NO2\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$" - } - }, - "context": { - "in": "path", - "name": "context", - "description": "The value of this parameter determines the **constraints taken into account** when generating the schema.\n\nPossible options are:\n\n* `datastructure`: Constraints attached to the DSD are applied.\n* `metadatastructure`: Constraints attached to the MSD are applied. \n* `dataflow`: Constraints attached to the dataflow and to the DSD used in the dataflow are applied.\n* `metadataflow`: Constraints attached to the metadataflow and to the MSD used in the metadataflow are applied. \n* `provisionagreement`: Constraints attached to the provision agreement, as well as to the dataflow or metadafalow used in the agreement and the DSD or MSD used in the dataflow or metadataflow are applied.\n", - "required": true, - "schema": { - "type": "string", - "enum": [ - "datastructure", - "metadatastructure", - "dataflow", - "metadataflow", - "provisionagreement" - ] - } - }, - "agencyID": { - "in": "path", - "name": "agencyID", - "description": "The agency maintaining the artefact used to generate the schema to be returned.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*$" - } - }, - "resourceID": { - "in": "path", - "name": "resourceID", - "description": "The id of the artefact used to generate the schema to be returned.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[A-Za-z\\d_@$-]+$" - } - }, - "version": { - "in": "path", - "name": "version", - "description": "The version of the artefact used to generate the schema to be returned.\n\nThe keyword `latest` can be used to return the latest production version of the matching resource.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^(latest|[\\d]+(\\.[\\d]+)*)$" - } - }, - "agencies": { - "in": "path", - "name": "agencyID", - "description": "The agency maintaining the artefact to be returned. \n\nIt is possible to set more than one agency, using `+` as separator (e.g. BIS+ECB).\n\nThe keyword `all` can be used to indicate that artefacts maintained by any maintenance agency should be returned.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$" - } - }, - "resourceIDs": { - "in": "path", - "name": "resourceID", - "description": "The id of the artefact to be returned.\n\nIt is possible to set more than one id, using `+` as separator (e.g. CL_FREQ+CL_CONF_STATUS).\n\nThe keyword `all` can be used to indicate that any artefact of the specified resource type, {agencyID} and {version} should be returned. \n", - "required": true, - "schema": { - "type": "string", - "pattern": "^([A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$" - } - }, - "versions": { - "in": "path", - "name": "version", - "description": "The version of the artefact to be returned. \n\nIt is possible to set more than one version, using `+` as separator (e.g. 1.0+2.1).\n\nThe keyword `all` can be used to return all versions of the matching resource.\n\nThe keyword `latest` can be used to return the latest production version of the matching resource.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^(all|latest|[\\d]+(\\.[\\d]+)*(\\+[\\d]+(\\.[\\d]+)*)*)$" - } - }, - "items": { - "in": "path", - "name": "itemID", - "description": "The id of the item to be returned. \n\nIt is possible to set more than one id, using `+` as separator (e.g. A+Q+M).\n\nThe keyword `all` can be used to return all items of the matching resource.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^[A-Za-z\\d_@$-]+(\\.[A-Za-z\\d_@$-]+)*(\\+[A-Za-z\\d_@$-]+(\\.[A-Za-z\\d_@$-]+)*)*$" - } - }, - "componentID": { - "in": "path", - "name": "componentID", - "description": "The id of the Dimension for which to obtain availability information about. Use all to indicate that data availability should be provided for all dimensions.\n", - "required": true, - "schema": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z\\d_-]*$" - } - }, - "startPeriod": { - "in": "query", - "name": "startPeriod", - "description": "The start of the period for which results should be supplied (inclusive).\n\nCan be expressed using 8601 dates or SDMX reporting periods. \n\nExamples:\n* `2000`: Year (ISO 8601)\n* `2000-01`: Month (ISO 8601)\n* `2000-01-01`: Date (ISO 8601)\n* `2000-Q1`: Quarter (SDMX)\n* `2000-W01`: Week (SDMX)\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$" - } - }, - "endPeriod": { - "in": "query", - "name": "endPeriod", - "description": "The end of the period for which results should be supplied (inclusive).\n\nCan be expressed using 8601 dates or SDMX reporting periods. \n\nExamples:\n* `2000`: Year (ISO 8601)\n* `2000-01`: Month (ISO 8601)\n* `2000-01-01`: Date (ISO 8601)\n* `2000-S1`: Semester (SDMX)\n* `2000-D001`: Day (SDMX)\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$" - } - }, - "updatedAfter": { - "in": "query", - "name": "updatedAfter", - "description": "The last time the query was performed by the client. \n\nThe response should include the latest version of what has changed in the database since that point in time (i.e. additions, revisions or deletions since the last time the query was performed).\n", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - "firstNObservations": { - "in": "query", - "name": "firstNObservations", - "description": "The maximum number of observations to be returned starting from the oldest one\n", - "required": false, - "schema": { - "type": "integer", - "minimum": 1 - } - }, - "lastNObservations": { - "in": "query", - "name": "lastNObservations", - "description": "The maximum number of observations to be returned starting from the most recent one\n", - "required": false, - "schema": { - "type": "integer", - "minimum": 1 - } - }, - "dimensionAtObservation": { - "in": "query", - "name": "dimensionAtObservation", - "description": "Indicates **how the data should be packaged**. \n\nThe options are:\n\n* `TIME_PERIOD`: A timeseries view\n* The ID of any other dimension: A cross-sectional view of the data \n* `AllDimensions`: A flat view of the data.\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z\\d_-]*$", - "default": "TIME_PERIOD" - } - }, - "detail": { - "in": "query", - "name": "detail", - "description": "The **amount of information** to be returned. \n\nPossible options are: \n\n* `full`: All data and documentation\n* `dataonly`: Everything except attributes\n* `serieskeysonly`: The series keys. This is useful to return the series that match a certain query, without returning the actual data (e.g. overview page)\n* `nodata`: The series, including attributes and annotations, without observations.\n", - "required": false, - "schema": { - "type": "string", - "enum": [ - "full", - "dataonly", - "serieskeysonly", - "nodata" - ], - "default": "full" - } - }, - "includeHistory": { - "in": "query", - "name": "includeHistory", - "description": "Retrieve **previous versions of the data**. \n\nWhen `true`, the response will contain up to two datasets per dissemination, one containing new or updated values and one containing the deleted data (if any). \n", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - "explicitMeasure": { - "in": "query", - "name": "explicitMeasure", - "description": "For cross-sectional data validation, indicates whether observations are strongly typed \n", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - "structDetail": { - "in": "query", - "name": "detail", - "description": "The amount of information to be returned. \n\nPossible values are: \n\n* `allstubs`: All artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name\n* `referencestubs`: Referenced artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name\n* `referencepartial`: Referenced item schemes should only include items used by the artefact to be returned. For example, a concept scheme would only contain the concepts used in a DSD, and its isPartial flag would be set to `true`\n* `allcompletestubs`: All artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information\n* `referencecompletestubs`: Referenced artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information\n* `full`: All available information for all artefacts should be returned\n", - "required": false, - "schema": { - "type": "string", - "enum": [ - "allstubs", - "referencestubs", - "referencepartial", - "allcompletestubs", - "referencecompletestubs", - "full" - ], - "default": "full" - } - }, - "references": { - "in": "query", - "name": "references", - "description": "Instructs the web service to return (or not) the artefacts referenced by the artefact to be returned.\n\nPossible values are: \n\n* `none`: No references will be returned\n* `parents`: Returns the artefacts that use the artefact matching the query\n* `parentsandsiblings`: Returns the artefacts that use the artefact matching the query, as well as the artefacts referenced by these artefacts\n* `children`: Returns the artefacts referenced by the artefact to be returned\n* `descendants`: References of references, up to any level, will be returned\n* `all`: The combination of parentsandsiblings and descendants\n* In addition, a concrete type of resource may also be used (for example, references=codelist).\n", - "required": false, - "schema": { - "type": "string", - "enum": [ - "none", - "parents", - "parentsandsiblings", - "children", - "descendants", - "all", - "datastructure", - "metadatastructure", - "categoryscheme", - "conceptscheme", - "codelist", - "hierarchicalcodelist", - "organisationscheme", - "agencyscheme", - "dataproviderscheme", - "dataconsumerscheme", - "organisationunitscheme", - "dataflow", - "metadataflow", - "reportingtaxonomy", - "provisionagreement", - "structureset", - "process", - "categorisation", - "contentconstraint", - "actualconstraint", - "allowedconstraint", - "attachmentconstraint", - "transformationscheme", - "rulesetscheme", - "userdefinedoperatorscheme", - "customtypescheme", - "namepersonalisationscheme", - "namealiasscheme" - ], - "default": "none" - } - }, - "mode": { - "in": "query", - "name": "mode", - "description": "Instructs the web service to return a ContentConstraint which defines a Cube Region containing values which will be returned by executing the query (mode=\"exact\") vs a Cube Region showing what values remain valid selections that could be added to the data query (mode=\"available\"). A valid selection is one which results in one or more series existing for the selected value, based on the current data query selection state defined by the current path parameters.\n", - "required": false, - "schema": { - "type": "string", - "enum": [ - "exact", - "available" - ], - "default": "exact" - } - }, - "acreferences": { - "in": "query", - "name": "references", - "description": "Instructs the web service to return (or not) the artefacts referenced by the ContentConstraint to be returned.\n", - "required": false, - "schema": { - "type": "string", - "enum": [ - "none", - "all", - "datastructure", - "conceptscheme", - "codelist", - "dataproviderscheme", - "dataflow" - ], - "default": "none" - } - }, - "accept-encoding": { - "in": "header", - "name": "Accept-Encoding", - "description": "Specifies whether the response should be compressed and how. \n\n`identity` (the default) indicates that no compression will be performed.\n", - "schema": { - "type": "string", - "enum": [ - "br", - "compress", - "deflate", - "exi", - "gzip", - "identity", - "pack200-gzip", - "zstd" - ], - "default": "identity" - } - }, - "accept-language": { - "in": "header", - "name": "Accept-Language", - "description": "Specifies the client's preferred language. \n", - "schema": { - "type": "string" - } - }, - "if-modified-since": { - "in": "header", - "name": "If-Modified-Since", - "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp. \n", - "schema": { - "type": "string", - "format": "date-time" - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/vnd.sdmx.genericdata+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.structurespecificdata+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.generictimeseriesdata+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.structurespecifictimeseriesdata+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.data+csv;version=1.0.0": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.data+json;version=1.0.0": { - "schema": { - "type": "string" - } - } - } - }, - "304": { - "description": "No changes" - }, - "400": { - "description": "Bad syntax" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Not found" - }, - "406": { - "description": "Not acceptable" - }, - "413": { - "description": "Request entity too large" - }, - "414": { - "description": "URI too long" - }, - "500": { - "description": "Internal server error" - }, - "501": { - "description": "Not implemented" - }, - "503": { - "description": "Service unavailable" - }, - "200-schemas": { - "description": "OK", - "content": { - "application/vnd.sdmx.schema+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.structure+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.structure+json;version=1.0.0": { - "schema": { - "type": "string" - } - } - } - }, - "200-struct": { - "description": "OK", - "content": { - "application/vnd.sdmx.structure+xml;version=2.1": { - "schema": { - "type": "string" - } - }, - "application/vnd.sdmx.structure+json;version=1.0.0": { - "schema": { - "type": "string" - } - } - } - } - } - } -} -- GitLab From 82039e9cd007815ef4b0ba6f1a7b7fe2cc20696e Mon Sep 17 00:00:00 2001 From: David Rauh <david.rauh@uba.de> Date: Mon, 17 Jun 2024 13:59:21 +0000 Subject: [PATCH 2/9] add Dockerfile --- docker/Dockerfile-swagger | 12 + {images => swagger/images}/logo.png | Bin {images => swagger/images}/logo.svg | 0 swagger/openapi-files/swagger-nsiws-v1.json | 3445 +++++++++++++++++ swagger/openapi-files/swagger-nsiws-v2.json | 1663 ++++++++ .../openapi-files/swagger-transfer-v1.2.json | 1986 ++++++++++ .../openapi-files/swagger-transfer-v2.json | 2324 +++++++++++ .../openapi-files/swagger-transfer-v3.json | 2507 ++++++++++++ swagger/ui/custom.css | 21 +- 9 files changed, 11956 insertions(+), 2 deletions(-) create mode 100644 docker/Dockerfile-swagger rename {images => swagger/images}/logo.png (100%) rename {images => swagger/images}/logo.svg (100%) create mode 100644 swagger/openapi-files/swagger-nsiws-v1.json create mode 100644 swagger/openapi-files/swagger-nsiws-v2.json create mode 100644 swagger/openapi-files/swagger-transfer-v1.2.json create mode 100644 swagger/openapi-files/swagger-transfer-v2.json create mode 100644 swagger/openapi-files/swagger-transfer-v3.json diff --git a/docker/Dockerfile-swagger b/docker/Dockerfile-swagger new file mode 100644 index 0000000..786e7ad --- /dev/null +++ b/docker/Dockerfile-swagger @@ -0,0 +1,12 @@ +FROM swaggerapi/swagger-ui:v5.17.14 + + +COPY swagger/openapi-files /usr/share/nginx/html/openapi +COPY swagger/ui/custom.css /usr/share/nginx/html/index.css +COPY swagger/images /usr/share/nginx/html/images +ENV URLS="[{url: \"./openapi/swagger-nsiws-v2.json\", name: \"NSIWS-v2\"},\ + {url: \"./openapi/swagger-nsiws-v1.json\", name: \"NSIWS-v1\"},\ + {url: \"./openapi/swagger-transfer-v3.json\", name: \"TRANSFER-v3\"},\ + {url: \"./openapi/swagger-transfer-v2.json\", name: \"TRANSFER-v2\"},\ + {url: \"./openapi/swagger-transfer-v1.2.json\", name: \"TRANSFER-v1.2\"}]" +ENV URLS_PRIMARY_NAME="NSIWS-v1" \ No newline at end of file diff --git a/images/logo.png b/swagger/images/logo.png similarity index 100% rename from images/logo.png rename to swagger/images/logo.png diff --git a/images/logo.svg b/swagger/images/logo.svg similarity index 100% rename from images/logo.svg rename to swagger/images/logo.svg diff --git a/swagger/openapi-files/swagger-nsiws-v1.json b/swagger/openapi-files/swagger-nsiws-v1.json new file mode 100644 index 0000000..e042e2c --- /dev/null +++ b/swagger/openapi-files/swagger-nsiws-v1.json @@ -0,0 +1,3445 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "SDMX RESTful API, v1.5.0", + "description": "<p>The SDMX RESTful API, released in September 2020.</p><p>For additional information, check the <a rel='noopener noreferrer' target='_blank' href='https://github.com/sdmx-twg/sdmx-rest/tree/master/v2_1/ws/rest/docs'>official sdmx-rest specification</a> or the <a rel='noopener noreferrer' target='_blank' href='https://github.com/sdmx-twg/sdmx-rest/wiki'>dedicated Wiki</a>.</p>", + "version": "v1" + }, + "servers": [ + { + "description": "UBA Data Cube", + "url": "https://daten.uba.de/release" + }, + { + "description": "UBA Data Cube Design Space", + "url": "https://daten.uba.de/design" + } + ], + "paths": { + "/rest/availableconstraint/{flowRef}/{key}/{providerRef}/{componentIds}": { + "get": { + "tags": [ + "Data availability queries" + ], + "summary": "Get information about data availability", + "parameters": [ + { + "name": "flowRef", + "in": "path", + "description": "<p>The <strong>statistical domain</strong> (aka dataflow) of the data to be returned.</p><p>Examples:</p><ul><li><code>EXR</code>: The ID of the domain</li><li><code>ECB,EXR</code>: The EXR domain, maintained by the ECB</li><li><code>ECB,EXR,1.0</code>: Version 1.0 of the EXR domain, maintained by the ECB</li></ul>", + "schema": { + "pattern": "^([a-zA-Z][a-zA-Z\\d_-]*(\\.[a-zA-Z][a-zA-Z\\d_-]*)*,)?[a-zA-Z\\d_@$-]+(,(latest|(\\d+(\\.\\d+)*)))?$", + "type": "string", + "example": null + } + }, + { + "name": "key", + "in": "path", + "description": "<p>The (possibly partial) <strong>key identifying the data to be returned</strong>.</p><p>The keyword <code>all</code> can be used to indicate that all data belonging to the specified dataflow and provided by the specified provider must be returned.</p><p>The examples below are based on the following key: Frequency, Country, Component of inflation, Unit of measure.</p><ul><li><code>M.DE.000000.ANR</code>: Full key, matching exactly one series, i.e. the monthly (<code>M</code>) rates of change (<code>ANR</code>) of overall inflation (<code>000000</code>) in Germany (<code>DE</code>).</li><li><code>A+M.DE.000000.ANR</code>: Retrieves both annual and monthly data (<code>A+M</code>), matching exactly two series</li><li><code>A+M..000000.ANR</code>: The second dimension is wildcarded, and it wil therefore match the annual and monthly rates of change of overall inflation in any country.</li></ul>", + "schema": { + "pattern": "^([\\.A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "providerRef", + "in": "path", + "description": "<p>The <strong>provider of the data</strong> to be retrieved.</p><p>The keyword <code>all</code> can be used to indicate that all data matching the supplied key and belonging to the specified dataflow and provided by any data provider must be returned.</p><p>Examples:</p><ul><li><code>ECB</code>: Data provided by ECB</li><li><code>CH2+NO2</code>: Data provided by CH2 or NO2</li></ul>", + "schema": { + "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "componentIds", + "in": "path", + "description": "The id of the Dimension for which to obtain availability information about. Use all to indicate that data availability should be provided for all dimensions.", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "mode", + "in": "query", + "description": "Instructs the web service to return a ContentConstraint which defines a Cube Region containing values which will be returned by executing the query (mode='exact') vs a Cube Region showing what values remain valid selections that could be added to the data query (mode='available'). A valid selection is one which results in one or more series existing for the selected value, based on the current data query selection state defined by the current path parameters.", + "schema": { + "enum": [ + "exact", + "available" + ], + "type": "string", + "default": "exact", + "example": null + } + }, + { + "name": "references", + "in": "query", + "description": "Instructs the web service to return (or not) the artefacts referenced by the ContentConstraint to be returned.", + "schema": { + "enum": [ + "none", + "all", + "datastructure", + "conceptscheme", + "codelist", + "dataproviderscheme", + "dataflow" + ], + "type": "string", + "default": "none", + "example": null + } + }, + { + "name": "startPeriod", + "in": "query", + "description": "<p>The start of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-Q1</code>: Quarter (SDMX)</li><li><code>2000-W01</code>: Week (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "endPeriod", + "in": "query", + "description": "<p>The end of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-S1</code>: Semester (SDMX)</li><li><code>2000-D001</code>: Day (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "<p>The last time the query was performed by the client.</p><p>The response should include the latest version of what has changed in the database since that point in time (i.e. additions, revisions or deletions since the last time the query was performed).</p>", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "description": "Specifies the client's preferred language.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v1/availableconstraint/{flowRef}/{key}/{providerRef}/{componentIds}": { + "get": { + "tags": [ + "Data availability queries" + ], + "summary": "Get information about data availability", + "parameters": [ + { + "name": "flowRef", + "in": "path", + "description": "<p>The <strong>statistical domain</strong> (aka dataflow) of the data to be returned.</p><p>Examples:</p><ul><li><code>EXR</code>: The ID of the domain</li><li><code>ECB,EXR</code>: The EXR domain, maintained by the ECB</li><li><code>ECB,EXR,1.0</code>: Version 1.0 of the EXR domain, maintained by the ECB</li></ul>", + "schema": { + "pattern": "^([a-zA-Z][a-zA-Z\\d_-]*(\\.[a-zA-Z][a-zA-Z\\d_-]*)*,)?[a-zA-Z\\d_@$-]+(,(latest|(\\d+(\\.\\d+)*)))?$", + "type": "string", + "example": null + } + }, + { + "name": "key", + "in": "path", + "description": "<p>The (possibly partial) <strong>key identifying the data to be returned</strong>.</p><p>The keyword <code>all</code> can be used to indicate that all data belonging to the specified dataflow and provided by the specified provider must be returned.</p><p>The examples below are based on the following key: Frequency, Country, Component of inflation, Unit of measure.</p><ul><li><code>M.DE.000000.ANR</code>: Full key, matching exactly one series, i.e. the monthly (<code>M</code>) rates of change (<code>ANR</code>) of overall inflation (<code>000000</code>) in Germany (<code>DE</code>).</li><li><code>A+M.DE.000000.ANR</code>: Retrieves both annual and monthly data (<code>A+M</code>), matching exactly two series</li><li><code>A+M..000000.ANR</code>: The second dimension is wildcarded, and it wil therefore match the annual and monthly rates of change of overall inflation in any country.</li></ul>", + "schema": { + "pattern": "^([\\.A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "providerRef", + "in": "path", + "description": "<p>The <strong>provider of the data</strong> to be retrieved.</p><p>The keyword <code>all</code> can be used to indicate that all data matching the supplied key and belonging to the specified dataflow and provided by any data provider must be returned.</p><p>Examples:</p><ul><li><code>ECB</code>: Data provided by ECB</li><li><code>CH2+NO2</code>: Data provided by CH2 or NO2</li></ul>", + "schema": { + "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "componentIds", + "in": "path", + "description": "The id of the Dimension for which to obtain availability information about. Use all to indicate that data availability should be provided for all dimensions.", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "mode", + "in": "query", + "description": "Instructs the web service to return a ContentConstraint which defines a Cube Region containing values which will be returned by executing the query (mode='exact') vs a Cube Region showing what values remain valid selections that could be added to the data query (mode='available'). A valid selection is one which results in one or more series existing for the selected value, based on the current data query selection state defined by the current path parameters.", + "schema": { + "enum": [ + "exact", + "available" + ], + "type": "string", + "default": "exact", + "example": null + } + }, + { + "name": "references", + "in": "query", + "description": "Instructs the web service to return (or not) the artefacts referenced by the ContentConstraint to be returned.", + "schema": { + "enum": [ + "none", + "all", + "datastructure", + "conceptscheme", + "codelist", + "dataproviderscheme", + "dataflow" + ], + "type": "string", + "default": "none", + "example": null + } + }, + { + "name": "startPeriod", + "in": "query", + "description": "<p>The start of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-Q1</code>: Quarter (SDMX)</li><li><code>2000-W01</code>: Week (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "endPeriod", + "in": "query", + "description": "<p>The end of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-S1</code>: Semester (SDMX)</li><li><code>2000-D001</code>: Day (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "<p>The last time the query was performed by the client.</p><p>The response should include the latest version of what has changed in the database since that point in time (i.e. additions, revisions or deletions since the last time the query was performed).</p>", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "description": "Specifies the client's preferred language.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/availableconstraint/{flowRef}/body/{providerRef}/{componentIds}": { + "post": { + "tags": [ + "Data availability queries" + ], + "summary": "Get information about data availability", + "description": "Same applicability as the GET method.\r\nThe POST method is used to include the 'key' argument in the body of query in order to workaround URL size limitations.\r\n \r\nUse and set the Content-Type HTTP header to ```application/x-www-form-urlencoded```", + "parameters": [ + { + "name": "flowRef", + "in": "path", + "description": "<p>The <strong>statistical domain</strong> (aka dataflow) of the data to be returned.</p><p>Examples:</p><ul><li><code>EXR</code>: The ID of the domain</li><li><code>ECB,EXR</code>: The EXR domain, maintained by the ECB</li><li><code>ECB,EXR,1.0</code>: Version 1.0 of the EXR domain, maintained by the ECB</li></ul>", + "schema": { + "pattern": "^([a-zA-Z][a-zA-Z\\d_-]*(\\.[a-zA-Z][a-zA-Z\\d_-]*)*,)?[a-zA-Z\\d_@$-]+(,(latest|(\\d+(\\.\\d+)*)))?$", + "type": "string", + "example": null + } + }, + { + "name": "providerRef", + "in": "path", + "description": "<p>The <strong>provider of the data</strong> to be retrieved.</p><p>The keyword <code>all</code> can be used to indicate that all data matching the supplied key and belonging to the specified dataflow and provided by any data provider must be returned.</p><p>Examples:</p><ul><li><code>ECB</code>: Data provided by ECB</li><li><code>CH2+NO2</code>: Data provided by CH2 or NO2</li></ul>", + "schema": { + "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "componentIds", + "in": "path", + "description": "The id of the Dimension for which to obtain availability information about. Use all to indicate that data availability should be provided for all dimensions.", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "key", + "in": "path", + "description": "<p>The (possibly partial) <strong>key identifying the data to be returned</strong>.</p><p>The keyword <code>all</code> can be used to indicate that all data belonging to the specified dataflow and provided by the specified provider must be returned.</p><p>The examples below are based on the following key: Frequency, Country, Component of inflation, Unit of measure.</p><ul><li><code>M.DE.000000.ANR</code>: Full key, matching exactly one series, i.e. the monthly (<code>M</code>) rates of change (<code>ANR</code>) of overall inflation (<code>000000</code>) in Germany (<code>DE</code>).</li><li><code>A+M.DE.000000.ANR</code>: Retrieves both annual and monthly data (<code>A+M</code>), matching exactly two series</li><li><code>A+M..000000.ANR</code>: The second dimension is wildcarded, and it wil therefore match the annual and monthly rates of change of overall inflation in any country.</li></ul>", + "schema": { + "pattern": "^([\\.A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$", + "type": "string", + "example": null + } + }, + { + "name": "mode", + "in": "query", + "description": "Instructs the web service to return a ContentConstraint which defines a Cube Region containing values which will be returned by executing the query (mode='exact') vs a Cube Region showing what values remain valid selections that could be added to the data query (mode='available'). A valid selection is one which results in one or more series existing for the selected value, based on the current data query selection state defined by the current path parameters.", + "schema": { + "enum": [ + "exact", + "available" + ], + "type": "string", + "default": "exact", + "example": null + } + }, + { + "name": "references", + "in": "query", + "description": "Instructs the web service to return (or not) the artefacts referenced by the ContentConstraint to be returned.", + "schema": { + "enum": [ + "none", + "all", + "datastructure", + "conceptscheme", + "codelist", + "dataproviderscheme", + "dataflow" + ], + "type": "string", + "default": "none", + "example": null + } + }, + { + "name": "startPeriod", + "in": "query", + "description": "<p>The start of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-Q1</code>: Quarter (SDMX)</li><li><code>2000-W01</code>: Week (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "endPeriod", + "in": "query", + "description": "<p>The end of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-S1</code>: Semester (SDMX)</li><li><code>2000-D001</code>: Day (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "<p>The last time the query was performed by the client.</p><p>The response should include the latest version of what has changed in the database since that point in time (i.e. additions, revisions or deletions since the last time the query was performed).</p>", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "description": "Specifies the client's preferred language.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string" + } + } + }, + "encoding": { + "key": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v1/availableconstraint/{flowRef}/body/{providerRef}/{componentIds}": { + "post": { + "tags": [ + "Data availability queries" + ], + "summary": "Get information about data availability", + "description": "Same applicability as the GET method.\r\nThe POST method is used to include the 'key' argument in the body of query in order to workaround URL size limitations.\r\n \r\nUse and set the Content-Type HTTP header to ```application/x-www-form-urlencoded```", + "parameters": [ + { + "name": "flowRef", + "in": "path", + "description": "<p>The <strong>statistical domain</strong> (aka dataflow) of the data to be returned.</p><p>Examples:</p><ul><li><code>EXR</code>: The ID of the domain</li><li><code>ECB,EXR</code>: The EXR domain, maintained by the ECB</li><li><code>ECB,EXR,1.0</code>: Version 1.0 of the EXR domain, maintained by the ECB</li></ul>", + "schema": { + "pattern": "^([a-zA-Z][a-zA-Z\\d_-]*(\\.[a-zA-Z][a-zA-Z\\d_-]*)*,)?[a-zA-Z\\d_@$-]+(,(latest|(\\d+(\\.\\d+)*)))?$", + "type": "string", + "example": null + } + }, + { + "name": "providerRef", + "in": "path", + "description": "<p>The <strong>provider of the data</strong> to be retrieved.</p><p>The keyword <code>all</code> can be used to indicate that all data matching the supplied key and belonging to the specified dataflow and provided by any data provider must be returned.</p><p>Examples:</p><ul><li><code>ECB</code>: Data provided by ECB</li><li><code>CH2+NO2</code>: Data provided by CH2 or NO2</li></ul>", + "schema": { + "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "componentIds", + "in": "path", + "description": "The id of the Dimension for which to obtain availability information about. Use all to indicate that data availability should be provided for all dimensions.", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "key", + "in": "path", + "description": "<p>The (possibly partial) <strong>key identifying the data to be returned</strong>.</p><p>The keyword <code>all</code> can be used to indicate that all data belonging to the specified dataflow and provided by the specified provider must be returned.</p><p>The examples below are based on the following key: Frequency, Country, Component of inflation, Unit of measure.</p><ul><li><code>M.DE.000000.ANR</code>: Full key, matching exactly one series, i.e. the monthly (<code>M</code>) rates of change (<code>ANR</code>) of overall inflation (<code>000000</code>) in Germany (<code>DE</code>).</li><li><code>A+M.DE.000000.ANR</code>: Retrieves both annual and monthly data (<code>A+M</code>), matching exactly two series</li><li><code>A+M..000000.ANR</code>: The second dimension is wildcarded, and it wil therefore match the annual and monthly rates of change of overall inflation in any country.</li></ul>", + "schema": { + "pattern": "^([\\.A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$", + "type": "string", + "example": null + } + }, + { + "name": "mode", + "in": "query", + "description": "Instructs the web service to return a ContentConstraint which defines a Cube Region containing values which will be returned by executing the query (mode='exact') vs a Cube Region showing what values remain valid selections that could be added to the data query (mode='available'). A valid selection is one which results in one or more series existing for the selected value, based on the current data query selection state defined by the current path parameters.", + "schema": { + "enum": [ + "exact", + "available" + ], + "type": "string", + "default": "exact", + "example": null + } + }, + { + "name": "references", + "in": "query", + "description": "Instructs the web service to return (or not) the artefacts referenced by the ContentConstraint to be returned.", + "schema": { + "enum": [ + "none", + "all", + "datastructure", + "conceptscheme", + "codelist", + "dataproviderscheme", + "dataflow" + ], + "type": "string", + "default": "none", + "example": null + } + }, + { + "name": "startPeriod", + "in": "query", + "description": "<p>The start of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-Q1</code>: Quarter (SDMX)</li><li><code>2000-W01</code>: Week (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "endPeriod", + "in": "query", + "description": "<p>The end of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-S1</code>: Semester (SDMX)</li><li><code>2000-D001</code>: Day (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "<p>The last time the query was performed by the client.</p><p>The response should include the latest version of what has changed in the database since that point in time (i.e. additions, revisions or deletions since the last time the query was performed).</p>", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "description": "Specifies the client's preferred language.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string" + } + } + }, + "encoding": { + "key": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/data/{flowRef}/{key}/{providerRef}": { + "get": { + "tags": [ + "Data queries" + ], + "summary": "Get data", + "parameters": [ + { + "name": "flowRef", + "in": "path", + "description": "<p>The <strong>statistical domain</strong> (aka dataflow) of the data to be returned.</p><p>Examples:</p><ul><li><code>EXR</code>: The ID of the domain</li><li><code>ECB,EXR</code>: The EXR domain, maintained by the ECB</li><li><code>ECB,EXR,1.0</code>: Version 1.0 of the EXR domain, maintained by the ECB</li></ul>", + "schema": { + "pattern": "^([a-zA-Z][a-zA-Z\\d_-]*(\\.[a-zA-Z][a-zA-Z\\d_-]*)*,)?[a-zA-Z\\d_@$-]+(,(latest|(\\d+(\\.\\d+)*)))?$", + "type": "string", + "example": null + } + }, + { + "name": "key", + "in": "path", + "description": "<p>The (possibly partial) <strong>key identifying the data to be returned</strong>.</p><p>The keyword <code>all</code> can be used to indicate that all data belonging to the specified dataflow and provided by the specified provider must be returned.</p><p>The examples below are based on the following key: Frequency, Country, Component of inflation, Unit of measure.</p><ul><li><code>M.DE.000000.ANR</code>: Full key, matching exactly one series, i.e. the monthly (<code>M</code>) rates of change (<code>ANR</code>) of overall inflation (<code>000000</code>) in Germany (<code>DE</code>).</li><li><code>A+M.DE.000000.ANR</code>: Retrieves both annual and monthly data (<code>A+M</code>), matching exactly two series</li><li><code>A+M..000000.ANR</code>: The second dimension is wildcarded, and it wil therefore match the annual and monthly rates of change of overall inflation in any country.</li></ul>", + "schema": { + "pattern": "^([\\.A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "providerRef", + "in": "path", + "description": "<p>The <strong>provider of the data</strong> to be retrieved.</p><p>The keyword <code>all</code> can be used to indicate that all data matching the supplied key and belonging to the specified dataflow and provided by any data provider must be returned.</p><p>Examples:</p><ul><li><code>ECB</code>: Data provided by ECB</li><li><code>CH2+NO2</code>: Data provided by CH2 or NO2</li></ul>", + "schema": { + "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "startPeriod", + "in": "query", + "description": "<p>The start of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-Q1</code>: Quarter (SDMX)</li><li><code>2000-W01</code>: Week (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "endPeriod", + "in": "query", + "description": "<p>The end of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-S1</code>: Semester (SDMX)</li><li><code>2000-D001</code>: Day (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "<p>The last time the query was performed by the client.</p><p>The response should include the latest version of what has changed in the database since that point in time (i.e. additions, revisions or deletions since the last time the query was performed).</p>", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "firstNObservations", + "in": "query", + "description": "The maximum number of observations to be returned starting from the oldest one.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "lastNObservations", + "in": "query", + "description": "The maximum number of observations to be returned starting from the most recent one.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "dimensionAtObservation", + "in": "query", + "description": "<p>Indicates <strong>how the data should be packaged</strong>.</p><p>The options are:</p><ul><li><code>TIME_PERIOD</code>: A timeseries view</li><li>The ID of any other dimension: A cross-sectional view of the data</li><li><code>AllDimensions</code>: A flat view of the data.</li></ul>", + "schema": { + "pattern": "^[A-Za-z][A-Za-z\\d_-]*$", + "type": "string", + "default": "TIME_PERIOD", + "example": null + } + }, + { + "name": "detail", + "in": "query", + "description": "<p>The <strong>amount of information</strong> to be returned.</p><p>Possible options are:</p><ul><li><code>full</code>: All data and documentation</li><li><code>dataonly</code>: Everything except attributes</li><li><code>serieskeysonly</code>: The series keys. This is useful to return the series that match a certain query, without returning the actual data (e.g. overview page)</li><li><code>nodata</code>: The series, including attributes and annotations, without observations.</li></ul>", + "schema": { + "enum": [ + "full", + "dataonly", + "serieskeysonly", + "nodata" + ], + "type": "string", + "default": "full", + "example": null + } + }, + { + "name": "includeHistory", + "in": "query", + "description": "<p>Retrieve <strong>previous versions of the data</strong>.</p><p>When <code>true</code>, the response will contain up to two datasets per dissemination, one containing new or updated values and one containing the deleted data (if any).</p>", + "schema": { + "type": "boolean", + "default": "false", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "description": "Specifies the client's preferred language.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/mappingValidation;version=2.1": { }, + "application/mappingValidation;version=2.0": { }, + "application/mappingValidation": { }, + "text/csv": { }, + "application/vnd.sdmx.data+csv": { }, + "application/vnd.sdmx.data+csv;labels=id": { }, + "application/vnd.sdmx.data+csv;labels=both": { }, + "application/vnd.sdmx.data+csv;timeformat=original": { }, + "application/vnd.sdmx.data+csv;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2.0;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.genericdata+xml; version=2.1": { }, + "application/vnd.sdmx.genericdata+xml; version=3.0": { }, + "application/vnd.sdmx.structurespecificdata+xml; version=3.0": { }, + "application/vnd.sdmx.structurespecificdata+xml; version=2.1": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/vnd.sdmx.genericdata+xml; version=2.0": { }, + "application/vnd.sdmx.compactdata+xml; version=2.0": { }, + "application/vnd.sdmx.crosssectionaldata+xml; version=2.0": { }, + "application/vnd.sdmx.edidata; version=SDMX-EDI": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.data+json;version=2": { }, + "application/vnd.sdmx.data+json;version=2.0": { }, + "application/vnd.sdmx.data+json;version=2.0.0": { }, + "application/vnd.sdmx.data+json;version=1.0": { }, + "application/vnd.sdmx.data+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v1/data/{flowRef}/{key}/{providerRef}": { + "get": { + "tags": [ + "Data queries" + ], + "summary": "Get data", + "parameters": [ + { + "name": "flowRef", + "in": "path", + "description": "<p>The <strong>statistical domain</strong> (aka dataflow) of the data to be returned.</p><p>Examples:</p><ul><li><code>EXR</code>: The ID of the domain</li><li><code>ECB,EXR</code>: The EXR domain, maintained by the ECB</li><li><code>ECB,EXR,1.0</code>: Version 1.0 of the EXR domain, maintained by the ECB</li></ul>", + "schema": { + "pattern": "^([a-zA-Z][a-zA-Z\\d_-]*(\\.[a-zA-Z][a-zA-Z\\d_-]*)*,)?[a-zA-Z\\d_@$-]+(,(latest|(\\d+(\\.\\d+)*)))?$", + "type": "string", + "example": null + } + }, + { + "name": "key", + "in": "path", + "description": "<p>The (possibly partial) <strong>key identifying the data to be returned</strong>.</p><p>The keyword <code>all</code> can be used to indicate that all data belonging to the specified dataflow and provided by the specified provider must be returned.</p><p>The examples below are based on the following key: Frequency, Country, Component of inflation, Unit of measure.</p><ul><li><code>M.DE.000000.ANR</code>: Full key, matching exactly one series, i.e. the monthly (<code>M</code>) rates of change (<code>ANR</code>) of overall inflation (<code>000000</code>) in Germany (<code>DE</code>).</li><li><code>A+M.DE.000000.ANR</code>: Retrieves both annual and monthly data (<code>A+M</code>), matching exactly two series</li><li><code>A+M..000000.ANR</code>: The second dimension is wildcarded, and it wil therefore match the annual and monthly rates of change of overall inflation in any country.</li></ul>", + "schema": { + "pattern": "^([\\.A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "providerRef", + "in": "path", + "description": "<p>The <strong>provider of the data</strong> to be retrieved.</p><p>The keyword <code>all</code> can be used to indicate that all data matching the supplied key and belonging to the specified dataflow and provided by any data provider must be returned.</p><p>Examples:</p><ul><li><code>ECB</code>: Data provided by ECB</li><li><code>CH2+NO2</code>: Data provided by CH2 or NO2</li></ul>", + "schema": { + "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "startPeriod", + "in": "query", + "description": "<p>The start of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-Q1</code>: Quarter (SDMX)</li><li><code>2000-W01</code>: Week (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "endPeriod", + "in": "query", + "description": "<p>The end of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-S1</code>: Semester (SDMX)</li><li><code>2000-D001</code>: Day (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "<p>The last time the query was performed by the client.</p><p>The response should include the latest version of what has changed in the database since that point in time (i.e. additions, revisions or deletions since the last time the query was performed).</p>", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "firstNObservations", + "in": "query", + "description": "The maximum number of observations to be returned starting from the oldest one.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "lastNObservations", + "in": "query", + "description": "The maximum number of observations to be returned starting from the most recent one.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "dimensionAtObservation", + "in": "query", + "description": "<p>Indicates <strong>how the data should be packaged</strong>.</p><p>The options are:</p><ul><li><code>TIME_PERIOD</code>: A timeseries view</li><li>The ID of any other dimension: A cross-sectional view of the data</li><li><code>AllDimensions</code>: A flat view of the data.</li></ul>", + "schema": { + "pattern": "^[A-Za-z][A-Za-z\\d_-]*$", + "type": "string", + "default": "TIME_PERIOD", + "example": null + } + }, + { + "name": "detail", + "in": "query", + "description": "<p>The <strong>amount of information</strong> to be returned.</p><p>Possible options are:</p><ul><li><code>full</code>: All data and documentation</li><li><code>dataonly</code>: Everything except attributes</li><li><code>serieskeysonly</code>: The series keys. This is useful to return the series that match a certain query, without returning the actual data (e.g. overview page)</li><li><code>nodata</code>: The series, including attributes and annotations, without observations.</li></ul>", + "schema": { + "enum": [ + "full", + "dataonly", + "serieskeysonly", + "nodata" + ], + "type": "string", + "default": "full", + "example": null + } + }, + { + "name": "includeHistory", + "in": "query", + "description": "<p>Retrieve <strong>previous versions of the data</strong>.</p><p>When <code>true</code>, the response will contain up to two datasets per dissemination, one containing new or updated values and one containing the deleted data (if any).</p>", + "schema": { + "type": "boolean", + "default": "false", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "description": "Specifies the client's preferred language.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/mappingValidation;version=2.1": { }, + "application/mappingValidation;version=2.0": { }, + "application/mappingValidation": { }, + "text/csv": { }, + "application/vnd.sdmx.data+csv": { }, + "application/vnd.sdmx.data+csv;labels=id": { }, + "application/vnd.sdmx.data+csv;labels=both": { }, + "application/vnd.sdmx.data+csv;timeformat=original": { }, + "application/vnd.sdmx.data+csv;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2.0;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.genericdata+xml; version=2.1": { }, + "application/vnd.sdmx.genericdata+xml; version=3.0": { }, + "application/vnd.sdmx.structurespecificdata+xml; version=3.0": { }, + "application/vnd.sdmx.structurespecificdata+xml; version=2.1": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/vnd.sdmx.genericdata+xml; version=2.0": { }, + "application/vnd.sdmx.compactdata+xml; version=2.0": { }, + "application/vnd.sdmx.crosssectionaldata+xml; version=2.0": { }, + "application/vnd.sdmx.edidata; version=SDMX-EDI": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.data+json;version=2": { }, + "application/vnd.sdmx.data+json;version=2.0": { }, + "application/vnd.sdmx.data+json;version=2.0.0": { }, + "application/vnd.sdmx.data+json;version=1.0": { }, + "application/vnd.sdmx.data+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/data/{flowRef}/body/{providerRef}": { + "post": { + "tags": [ + "Data queries" + ], + "summary": "Get data", + "description": "Same applicability as the GET method.\r\nThe POST method is used to include the 'key' argument in the body of query in order to workaround URL size limitations.\r\n \r\nUse and set the Content-Type HTTP header to ```application/x-www-form-urlencoded```", + "parameters": [ + { + "name": "flowRef", + "in": "path", + "description": "<p>The <strong>statistical domain</strong> (aka dataflow) of the data to be returned.</p><p>Examples:</p><ul><li><code>EXR</code>: The ID of the domain</li><li><code>ECB,EXR</code>: The EXR domain, maintained by the ECB</li><li><code>ECB,EXR,1.0</code>: Version 1.0 of the EXR domain, maintained by the ECB</li></ul>", + "schema": { + "pattern": "^([a-zA-Z][a-zA-Z\\d_-]*(\\.[a-zA-Z][a-zA-Z\\d_-]*)*,)?[a-zA-Z\\d_@$-]+(,(latest|(\\d+(\\.\\d+)*)))?$", + "type": "string", + "example": null + } + }, + { + "name": "providerRef", + "in": "path", + "description": "<p>The <strong>provider of the data</strong> to be retrieved.</p><p>The keyword <code>all</code> can be used to indicate that all data matching the supplied key and belonging to the specified dataflow and provided by any data provider must be returned.</p><p>Examples:</p><ul><li><code>ECB</code>: Data provided by ECB</li><li><code>CH2+NO2</code>: Data provided by CH2 or NO2</li></ul>", + "schema": { + "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "key", + "in": "path", + "description": "<p>The (possibly partial) <strong>key identifying the data to be returned</strong>.</p><p>The keyword <code>all</code> can be used to indicate that all data belonging to the specified dataflow and provided by the specified provider must be returned.</p><p>The examples below are based on the following key: Frequency, Country, Component of inflation, Unit of measure.</p><ul><li><code>M.DE.000000.ANR</code>: Full key, matching exactly one series, i.e. the monthly (<code>M</code>) rates of change (<code>ANR</code>) of overall inflation (<code>000000</code>) in Germany (<code>DE</code>).</li><li><code>A+M.DE.000000.ANR</code>: Retrieves both annual and monthly data (<code>A+M</code>), matching exactly two series</li><li><code>A+M..000000.ANR</code>: The second dimension is wildcarded, and it wil therefore match the annual and monthly rates of change of overall inflation in any country.</li></ul>", + "schema": { + "pattern": "^([\\.A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$", + "type": "string", + "example": null + } + }, + { + "name": "startPeriod", + "in": "query", + "description": "<p>The start of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-Q1</code>: Quarter (SDMX)</li><li><code>2000-W01</code>: Week (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "endPeriod", + "in": "query", + "description": "<p>The end of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-S1</code>: Semester (SDMX)</li><li><code>2000-D001</code>: Day (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "<p>The last time the query was performed by the client.</p><p>The response should include the latest version of what has changed in the database since that point in time (i.e. additions, revisions or deletions since the last time the query was performed).</p>", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "firstNObservations", + "in": "query", + "description": "The maximum number of observations to be returned starting from the oldest one.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "lastNObservations", + "in": "query", + "description": "The maximum number of observations to be returned starting from the most recent one.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "dimensionAtObservation", + "in": "query", + "description": "<p>Indicates <strong>how the data should be packaged</strong>.</p><p>The options are:</p><ul><li><code>TIME_PERIOD</code>: A timeseries view</li><li>The ID of any other dimension: A cross-sectional view of the data</li><li><code>AllDimensions</code>: A flat view of the data.</li></ul>", + "schema": { + "pattern": "^[A-Za-z][A-Za-z\\d_-]*$", + "type": "string", + "default": "TIME_PERIOD", + "example": null + } + }, + { + "name": "detail", + "in": "query", + "description": "<p>The <strong>amount of information</strong> to be returned.</p><p>Possible options are:</p><ul><li><code>full</code>: All data and documentation</li><li><code>dataonly</code>: Everything except attributes</li><li><code>serieskeysonly</code>: The series keys. This is useful to return the series that match a certain query, without returning the actual data (e.g. overview page)</li><li><code>nodata</code>: The series, including attributes and annotations, without observations.</li></ul>", + "schema": { + "enum": [ + "full", + "dataonly", + "serieskeysonly", + "nodata" + ], + "type": "string", + "default": "full", + "example": null + } + }, + { + "name": "includeHistory", + "in": "query", + "description": "<p>Retrieve <strong>previous versions of the data</strong>.</p><p>When <code>true</code>, the response will contain up to two datasets per dissemination, one containing new or updated values and one containing the deleted data (if any).</p>", + "schema": { + "type": "boolean", + "default": "false", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "description": "Specifies the client's preferred language.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string" + } + } + }, + "encoding": { + "key": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/mappingValidation;version=2.1": { }, + "application/mappingValidation;version=2.0": { }, + "application/mappingValidation": { }, + "text/csv": { }, + "application/vnd.sdmx.data+csv": { }, + "application/vnd.sdmx.data+csv;labels=id": { }, + "application/vnd.sdmx.data+csv;labels=both": { }, + "application/vnd.sdmx.data+csv;timeformat=original": { }, + "application/vnd.sdmx.data+csv;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2.0;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.genericdata+xml; version=2.1": { }, + "application/vnd.sdmx.genericdata+xml; version=3.0": { }, + "application/vnd.sdmx.structurespecificdata+xml; version=3.0": { }, + "application/vnd.sdmx.structurespecificdata+xml; version=2.1": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/vnd.sdmx.genericdata+xml; version=2.0": { }, + "application/vnd.sdmx.compactdata+xml; version=2.0": { }, + "application/vnd.sdmx.crosssectionaldata+xml; version=2.0": { }, + "application/vnd.sdmx.edidata; version=SDMX-EDI": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.data+json;version=2": { }, + "application/vnd.sdmx.data+json;version=2.0": { }, + "application/vnd.sdmx.data+json;version=2.0.0": { }, + "application/vnd.sdmx.data+json;version=1.0": { }, + "application/vnd.sdmx.data+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v1/data/{flowRef}/body/{providerRef}": { + "post": { + "tags": [ + "Data queries" + ], + "summary": "Get data", + "description": "Same applicability as the GET method.\r\nThe POST method is used to include the 'key' argument in the body of query in order to workaround URL size limitations.\r\n \r\nUse and set the Content-Type HTTP header to ```application/x-www-form-urlencoded```", + "parameters": [ + { + "name": "flowRef", + "in": "path", + "description": "<p>The <strong>statistical domain</strong> (aka dataflow) of the data to be returned.</p><p>Examples:</p><ul><li><code>EXR</code>: The ID of the domain</li><li><code>ECB,EXR</code>: The EXR domain, maintained by the ECB</li><li><code>ECB,EXR,1.0</code>: Version 1.0 of the EXR domain, maintained by the ECB</li></ul>", + "schema": { + "pattern": "^([a-zA-Z][a-zA-Z\\d_-]*(\\.[a-zA-Z][a-zA-Z\\d_-]*)*,)?[a-zA-Z\\d_@$-]+(,(latest|(\\d+(\\.\\d+)*)))?$", + "type": "string", + "example": null + } + }, + { + "name": "providerRef", + "in": "path", + "description": "<p>The <strong>provider of the data</strong> to be retrieved.</p><p>The keyword <code>all</code> can be used to indicate that all data matching the supplied key and belonging to the specified dataflow and provided by any data provider must be returned.</p><p>Examples:</p><ul><li><code>ECB</code>: Data provided by ECB</li><li><code>CH2+NO2</code>: Data provided by CH2 or NO2</li></ul>", + "schema": { + "pattern": "^(([A-Za-z][A-Za-z\\d_-]*)(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+(\\+([A-Za-z][A-Za-z\\d_-]*(\\.[A-Za-z][A-Za-z\\d_-]*)*,)?[A-Za-z\\d_@$-]+)*$", + "type": "string", + "default": "ALL", + "example": null + } + }, + { + "name": "key", + "in": "path", + "description": "<p>The (possibly partial) <strong>key identifying the data to be returned</strong>.</p><p>The keyword <code>all</code> can be used to indicate that all data belonging to the specified dataflow and provided by the specified provider must be returned.</p><p>The examples below are based on the following key: Frequency, Country, Component of inflation, Unit of measure.</p><ul><li><code>M.DE.000000.ANR</code>: Full key, matching exactly one series, i.e. the monthly (<code>M</code>) rates of change (<code>ANR</code>) of overall inflation (<code>000000</code>) in Germany (<code>DE</code>).</li><li><code>A+M.DE.000000.ANR</code>: Retrieves both annual and monthly data (<code>A+M</code>), matching exactly two series</li><li><code>A+M..000000.ANR</code>: The second dimension is wildcarded, and it wil therefore match the annual and monthly rates of change of overall inflation in any country.</li></ul>", + "schema": { + "pattern": "^([\\.A-Za-z\\d_@$-]+(\\+[A-Za-z\\d_@$-]+)*)*$", + "type": "string", + "example": null + } + }, + { + "name": "startPeriod", + "in": "query", + "description": "<p>The start of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-Q1</code>: Quarter (SDMX)</li><li><code>2000-W01</code>: Week (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "endPeriod", + "in": "query", + "description": "<p>The end of the period for which results should be supplied (inclusive).</p><p>Can be expressed using 8601 dates or SDMX reporting periods.</p><p>Examples:</p><ul><li><code>2000</code>: Year (ISO 8601)</li><li><code>2000-01</code>: Month (ISO 8601)</li><li><code>2000-01-01</code>: Date (ISO 8601)</li><li><code>2000-S1</code>: Semester (SDMX)</li><li><code>2000-D001</code>: Day (SDMX)</li></ul>", + "schema": { + "pattern": "^\\d{4}-?((\\d{2}(-\\d{2})?)|A1|S[1|2]|Q[1-4]|T[1-3]|M(0[1-9]|1[0-2])|W(0[1-9]|[1-4][0-9]|5[0-3])|D(0[0-9][1-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6]))?$", + "type": "string", + "example": null + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "<p>The last time the query was performed by the client.</p><p>The response should include the latest version of what has changed in the database since that point in time (i.e. additions, revisions or deletions since the last time the query was performed).</p>", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "firstNObservations", + "in": "query", + "description": "The maximum number of observations to be returned starting from the oldest one.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "lastNObservations", + "in": "query", + "description": "The maximum number of observations to be returned starting from the most recent one.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "dimensionAtObservation", + "in": "query", + "description": "<p>Indicates <strong>how the data should be packaged</strong>.</p><p>The options are:</p><ul><li><code>TIME_PERIOD</code>: A timeseries view</li><li>The ID of any other dimension: A cross-sectional view of the data</li><li><code>AllDimensions</code>: A flat view of the data.</li></ul>", + "schema": { + "pattern": "^[A-Za-z][A-Za-z\\d_-]*$", + "type": "string", + "default": "TIME_PERIOD", + "example": null + } + }, + { + "name": "detail", + "in": "query", + "description": "<p>The <strong>amount of information</strong> to be returned.</p><p>Possible options are:</p><ul><li><code>full</code>: All data and documentation</li><li><code>dataonly</code>: Everything except attributes</li><li><code>serieskeysonly</code>: The series keys. This is useful to return the series that match a certain query, without returning the actual data (e.g. overview page)</li><li><code>nodata</code>: The series, including attributes and annotations, without observations.</li></ul>", + "schema": { + "enum": [ + "full", + "dataonly", + "serieskeysonly", + "nodata" + ], + "type": "string", + "default": "full", + "example": null + } + }, + { + "name": "includeHistory", + "in": "query", + "description": "<p>Retrieve <strong>previous versions of the data</strong>.</p><p>When <code>true</code>, the response will contain up to two datasets per dissemination, one containing new or updated values and one containing the deleted data (if any).</p>", + "schema": { + "type": "boolean", + "default": "false", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "description": "Specifies the client's preferred language.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string" + } + } + }, + "encoding": { + "key": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/mappingValidation;version=2.1": { }, + "application/mappingValidation;version=2.0": { }, + "application/mappingValidation": { }, + "text/csv": { }, + "application/vnd.sdmx.data+csv": { }, + "application/vnd.sdmx.data+csv;labels=id": { }, + "application/vnd.sdmx.data+csv;labels=both": { }, + "application/vnd.sdmx.data+csv;timeformat=original": { }, + "application/vnd.sdmx.data+csv;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2.0;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both;timeformat=original": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=id;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=name;timeformat=normalized": { }, + "application/vnd.sdmx.data+csv;version=2.0.0;labels=both;timeformat=normalized": { }, + "application/vnd.sdmx.genericdata+xml; version=2.1": { }, + "application/vnd.sdmx.genericdata+xml; version=3.0": { }, + "application/vnd.sdmx.structurespecificdata+xml; version=3.0": { }, + "application/vnd.sdmx.structurespecificdata+xml; version=2.1": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/vnd.sdmx.genericdata+xml; version=2.0": { }, + "application/vnd.sdmx.compactdata+xml; version=2.0": { }, + "application/vnd.sdmx.crosssectionaldata+xml; version=2.0": { }, + "application/vnd.sdmx.edidata; version=SDMX-EDI": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.data+json;version=2": { }, + "application/vnd.sdmx.data+json;version=2.0": { }, + "application/vnd.sdmx.data+json;version=2.0.0": { }, + "application/vnd.sdmx.data+json;version=1.0": { }, + "application/vnd.sdmx.data+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/{structure}/{agencyId}/{resourceId}/{version}/{itemId}": { + "get": { + "tags": [ + "Structure queries" + ], + "summary": "Item Scheme queries", + "description": "Item queries extend structure queries by allowing to retrieve items in item schemes such as particular codes in a codelist.", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The type of item scheme (e.g. codelist, agencyscheme, etc.)", + "required": true, + "schema": { + "enum": [ + "conceptscheme", + "codelist", + "categoryscheme", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "vtlmappingscheme", + "valuelist", + "structure" + ], + "type": "string", + "default": "structure", + "example": null + } + }, + { + "name": "agencyId", + "in": "path", + "description": "<p>The agency maintaining the artefact to be returned.</p>\r\n<p>It is possible to set more than one agency, using ```+``` as separator (e.g. BIS+ECB).</p>\r\n<p>The keyword ```all``` can be used to indicate that artefacts maintained by any maintenance agency should be returned.</p>", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "<p>The id of the artefact to be returned.</p>\r\n<p>It is possible to set more than one id, using ```+``` as separator (e.g. CL_FREQ+CL_CONF_STATUS).</p>\r\n<p>The keyword ```all``` can be used to indicate that any artefact of the specified resource type, {agencyID} and {version} should be returned.</p>", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "version", + "in": "path", + "description": "<p>The version of the artefact to be returned.</p>\r\n<p>It is possible to set more than one version, using ```+``` as separator (e.g. 1.0+2.1).</p>\r\n<p>The keyword ```all``` can be used to return all versions of the matching resource.</p>\r\n<p>The keyword ```latest``` can be used to return the latest production version of the matching resource.</p>", + "required": true, + "schema": { + "type": "string", + "default": "LATEST" + } + }, + { + "name": "itemId", + "in": "path", + "description": "<p>The id of the item to be returned.</p>\r\n<p>It is possible to set more than one id, using ```+``` as separator (e.g. A+Q+M).</p>\r\n<p>The keyword ```all``` can be used to return all items of the matching resource.</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "references", + "in": "query", + "description": "<p>Instructs the web service to return (or not) the artefacts referenced by the artefact to be returned.</p><p>Possible values are:</p><ul><li><code>none</code>: No references will be returned</li><li><code>parents</code>: Returns the artefacts that use the artefact matching the query</li><li><code>parentsandsiblings</code>: Returns the artefacts that use the artefact matching the query, as well as the artefacts referenced by these artefacts</li><li><code>children</code>: Returns the artefacts referenced by the artefact to be returned</li><li><code>descendants</code>: References of references, up to any level, will be returned</li><li><code>all</code>: The combination of parentsandsiblings and descendants</li><li>In addition, a concrete type of resource may also be used (for example, references=codelist).</li></ul>", + "schema": { + "enum": [ + "none", + "parents", + "parentsandsiblings", + "children", + "descendants", + "all", + "datastructure", + "metadatastructure", + "categoryscheme", + "conceptscheme", + "codelist", + "hierarchicalcodelist", + "organisationscheme", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "dataflow", + "metadataflow", + "reportingtaxonomy", + "provisionagreement", + "structureset", + "process", + "categorisation", + "contentconstraint", + "actualconstraint", + "allowedconstraint", + "attachmentconstraint", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "namealiasscheme" + ], + "type": "string", + "default": "none", + "example": null + } + }, + { + "name": "detail", + "in": "query", + "description": "<p>The amount of information to be returned.</p><p>Possible values are:</p><ul><li><code>allstubs</code>: All artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name</li><li><code>referencestubs</code>: Referenced artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name</li><li><code>referencepartial</code>: Referenced item schemes should only include items used by the artefact to be returned. For example, a concept scheme would only contain the concepts used in a DSD, and its isPartial flag would be set to <code>true</code></li><li><code>allcompletestubs</code>: All artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information</li><li><code>referencecompletestubs</code>: Referenced artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information</li><li><code>full</code>: All available information for all artefacts should be returned</li></ul>", + "schema": { + "enum": [ + "allstubs", + "referencestubs", + "referencepartial", + "allcompletestubs", + "referencecompletestubs", + "full" + ], + "type": "string", + "default": "full", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "description": "Specifies the client's preferred language.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v1/{structure}/{agencyId}/{resourceId}/{version}/{itemId}": { + "get": { + "tags": [ + "Structure queries" + ], + "summary": "Item Scheme queries", + "description": "Item queries extend structure queries by allowing to retrieve items in item schemes such as particular codes in a codelist.", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The type of item scheme (e.g. codelist, agencyscheme, etc.)", + "required": true, + "schema": { + "enum": [ + "conceptscheme", + "codelist", + "categoryscheme", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "vtlmappingscheme", + "valuelist", + "structure" + ], + "type": "string", + "default": "structure", + "example": null + } + }, + { + "name": "agencyId", + "in": "path", + "description": "<p>The agency maintaining the artefact to be returned.</p>\r\n<p>It is possible to set more than one agency, using ```+``` as separator (e.g. BIS+ECB).</p>\r\n<p>The keyword ```all``` can be used to indicate that artefacts maintained by any maintenance agency should be returned.</p>", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "<p>The id of the artefact to be returned.</p>\r\n<p>It is possible to set more than one id, using ```+``` as separator (e.g. CL_FREQ+CL_CONF_STATUS).</p>\r\n<p>The keyword ```all``` can be used to indicate that any artefact of the specified resource type, {agencyID} and {version} should be returned.</p>", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "version", + "in": "path", + "description": "<p>The version of the artefact to be returned.</p>\r\n<p>It is possible to set more than one version, using ```+``` as separator (e.g. 1.0+2.1).</p>\r\n<p>The keyword ```all``` can be used to return all versions of the matching resource.</p>\r\n<p>The keyword ```latest``` can be used to return the latest production version of the matching resource.</p>", + "required": true, + "schema": { + "type": "string", + "default": "LATEST" + } + }, + { + "name": "itemId", + "in": "path", + "description": "<p>The id of the item to be returned.</p>\r\n<p>It is possible to set more than one id, using ```+``` as separator (e.g. A+Q+M).</p>\r\n<p>The keyword ```all``` can be used to return all items of the matching resource.</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "references", + "in": "query", + "description": "<p>Instructs the web service to return (or not) the artefacts referenced by the artefact to be returned.</p><p>Possible values are:</p><ul><li><code>none</code>: No references will be returned</li><li><code>parents</code>: Returns the artefacts that use the artefact matching the query</li><li><code>parentsandsiblings</code>: Returns the artefacts that use the artefact matching the query, as well as the artefacts referenced by these artefacts</li><li><code>children</code>: Returns the artefacts referenced by the artefact to be returned</li><li><code>descendants</code>: References of references, up to any level, will be returned</li><li><code>all</code>: The combination of parentsandsiblings and descendants</li><li>In addition, a concrete type of resource may also be used (for example, references=codelist).</li></ul>", + "schema": { + "enum": [ + "none", + "parents", + "parentsandsiblings", + "children", + "descendants", + "all", + "datastructure", + "metadatastructure", + "categoryscheme", + "conceptscheme", + "codelist", + "hierarchicalcodelist", + "organisationscheme", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "dataflow", + "metadataflow", + "reportingtaxonomy", + "provisionagreement", + "structureset", + "process", + "categorisation", + "contentconstraint", + "actualconstraint", + "allowedconstraint", + "attachmentconstraint", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "namealiasscheme" + ], + "type": "string", + "default": "none", + "example": null + } + }, + { + "name": "detail", + "in": "query", + "description": "<p>The amount of information to be returned.</p><p>Possible values are:</p><ul><li><code>allstubs</code>: All artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name</li><li><code>referencestubs</code>: Referenced artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name</li><li><code>referencepartial</code>: Referenced item schemes should only include items used by the artefact to be returned. For example, a concept scheme would only contain the concepts used in a DSD, and its isPartial flag would be set to <code>true</code></li><li><code>allcompletestubs</code>: All artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information</li><li><code>referencecompletestubs</code>: Referenced artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information</li><li><code>full</code>: All available information for all artefacts should be returned</li></ul>", + "schema": { + "enum": [ + "allstubs", + "referencestubs", + "referencepartial", + "allcompletestubs", + "referencecompletestubs", + "full" + ], + "type": "string", + "default": "full", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "description": "Specifies the client's preferred language.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "description": "Instructs to return the content matching the query only if it has changed since the supplied timestamp.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/{structure}/{agencyId}/{resourceId}/{version}": { + "get": { + "tags": [ + "Structure queries" + ], + "summary": "Get data structures", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The type of structural metadata (e.g. codelist, dataflow, etc.)", + "required": true, + "schema": { + "enum": [ + "datastructure", + "metadatastructure", + "dataflow", + "metadataflow", + "provisionagreement", + "structureset", + "process", + "categorisation", + "dataconstraint", + "metadataconstraint", + "conceptscheme", + "codelist", + "categoryscheme", + "hierarchy", + "hierarchyassociation", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "vtlmappingscheme", + "valuelist", + "structuremap", + "representationmap", + "conceptschememap", + "categoryschememap", + "organisationschememap", + "reportingtaxonomymap", + "structure" + ], + "type": "string", + "default": "structure", + "example": null + } + }, + { + "name": "agencyId", + "in": "path", + "description": "<p>The agency maintaining the artefact to be returned.</p>\r\n<p>It is possible to set more than one agency, using ```+``` as separator (e.g. BIS+ECB).</p>\r\n<p>The keyword ```all``` can be used to indicate that artefacts maintained by any maintenance agency should be returned.</p>", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "<p>The id of the artefact to be returned.</p>\r\n<p>It is possible to set more than one id, using ```+``` as separator (e.g. CL_FREQ+CL_CONF_STATUS).</p>\r\n<p>The keyword ```all``` can be used to indicate that any artefact of the specified resource type, {agencyID} and {version} should be returned.</p>", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "version", + "in": "path", + "description": "<p>The version of the artefact to be returned.</p>\r\n<p>It is possible to set more than one version, using ```+``` as separator (e.g. 1.0+2.1).</p>\r\n<p>The keyword ```all``` can be used to return all versions of the matching resource.</p>\r\n<p>The keyword ```latest``` can be used to return the latest production version of the matching resource.</p>", + "required": true, + "schema": { + "type": "string", + "default": "LATEST" + } + }, + { + "name": "references", + "in": "query", + "description": "<p>Instructs the web service to return (or not) the artefacts referenced by the artefact to be returned.</p><p>Possible values are:</p><ul><li><code>none</code>: No references will be returned</li><li><code>parents</code>: Returns the artefacts that use the artefact matching the query</li><li><code>parentsandsiblings</code>: Returns the artefacts that use the artefact matching the query, as well as the artefacts referenced by these artefacts</li><li><code>children</code>: Returns the artefacts referenced by the artefact to be returned</li><li><code>descendants</code>: References of references, up to any level, will be returned</li><li><code>all</code>: The combination of parentsandsiblings and descendants</li><li>In addition, a concrete type of resource may also be used (for example, references=codelist).</li></ul>", + "schema": { + "enum": [ + "none", + "parents", + "parentsandsiblings", + "children", + "descendants", + "all", + "datastructure", + "metadatastructure", + "categoryscheme", + "conceptscheme", + "codelist", + "hierarchicalcodelist", + "organisationscheme", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "dataflow", + "metadataflow", + "reportingtaxonomy", + "provisionagreement", + "structureset", + "process", + "categorisation", + "contentconstraint", + "actualconstraint", + "allowedconstraint", + "attachmentconstraint", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "namealiasscheme" + ], + "type": "string", + "default": "none", + "example": null + } + }, + { + "name": "detail", + "in": "query", + "description": "<p>The amount of information to be returned.</p><p>Possible values are:</p><ul><li><code>allstubs</code>: All artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name</li><li><code>referencestubs</code>: Referenced artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name</li><li><code>referencepartial</code>: Referenced item schemes should only include items used by the artefact to be returned. For example, a concept scheme would only contain the concepts used in a DSD, and its isPartial flag would be set to <code>true</code></li><li><code>allcompletestubs</code>: All artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information</li><li><code>referencecompletestubs</code>: Referenced artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information</li><li><code>full</code>: All available information for all artefacts should be returned</li></ul>", + "schema": { + "enum": [ + "allstubs", + "referencestubs", + "referencepartial", + "allcompletestubs", + "referencecompletestubs", + "full" + ], + "type": "string", + "default": "full", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + }, + "put": { + "tags": [ + "Structure actions" + ], + "summary": "Replaces the specified structure stream.", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The structure.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "agencyId", + "in": "path", + "description": "The agency identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "The resource identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "description": "The version.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + }, + "delete": { + "tags": [ + "Structure actions" + ], + "summary": "Deletes the specified structure.", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The structure.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "agencyId", + "in": "path", + "description": "The agency identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "The resource identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "description": "The version.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v1/{structure}/{agencyId}/{resourceId}/{version}": { + "get": { + "tags": [ + "Structure queries" + ], + "summary": "Get data structures", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The type of structural metadata (e.g. codelist, dataflow, etc.)", + "required": true, + "schema": { + "enum": [ + "datastructure", + "metadatastructure", + "dataflow", + "metadataflow", + "provisionagreement", + "structureset", + "process", + "categorisation", + "dataconstraint", + "metadataconstraint", + "conceptscheme", + "codelist", + "categoryscheme", + "hierarchy", + "hierarchyassociation", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "vtlmappingscheme", + "valuelist", + "structuremap", + "representationmap", + "conceptschememap", + "categoryschememap", + "organisationschememap", + "reportingtaxonomymap", + "structure" + ], + "type": "string", + "default": "structure", + "example": null + } + }, + { + "name": "agencyId", + "in": "path", + "description": "<p>The agency maintaining the artefact to be returned.</p>\r\n<p>It is possible to set more than one agency, using ```+``` as separator (e.g. BIS+ECB).</p>\r\n<p>The keyword ```all``` can be used to indicate that artefacts maintained by any maintenance agency should be returned.</p>", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "<p>The id of the artefact to be returned.</p>\r\n<p>It is possible to set more than one id, using ```+``` as separator (e.g. CL_FREQ+CL_CONF_STATUS).</p>\r\n<p>The keyword ```all``` can be used to indicate that any artefact of the specified resource type, {agencyID} and {version} should be returned.</p>", + "required": true, + "schema": { + "type": "string", + "default": "ALL" + } + }, + { + "name": "version", + "in": "path", + "description": "<p>The version of the artefact to be returned.</p>\r\n<p>It is possible to set more than one version, using ```+``` as separator (e.g. 1.0+2.1).</p>\r\n<p>The keyword ```all``` can be used to return all versions of the matching resource.</p>\r\n<p>The keyword ```latest``` can be used to return the latest production version of the matching resource.</p>", + "required": true, + "schema": { + "type": "string", + "default": "LATEST" + } + }, + { + "name": "references", + "in": "query", + "description": "<p>Instructs the web service to return (or not) the artefacts referenced by the artefact to be returned.</p><p>Possible values are:</p><ul><li><code>none</code>: No references will be returned</li><li><code>parents</code>: Returns the artefacts that use the artefact matching the query</li><li><code>parentsandsiblings</code>: Returns the artefacts that use the artefact matching the query, as well as the artefacts referenced by these artefacts</li><li><code>children</code>: Returns the artefacts referenced by the artefact to be returned</li><li><code>descendants</code>: References of references, up to any level, will be returned</li><li><code>all</code>: The combination of parentsandsiblings and descendants</li><li>In addition, a concrete type of resource may also be used (for example, references=codelist).</li></ul>", + "schema": { + "enum": [ + "none", + "parents", + "parentsandsiblings", + "children", + "descendants", + "all", + "datastructure", + "metadatastructure", + "categoryscheme", + "conceptscheme", + "codelist", + "hierarchicalcodelist", + "organisationscheme", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "dataflow", + "metadataflow", + "reportingtaxonomy", + "provisionagreement", + "structureset", + "process", + "categorisation", + "contentconstraint", + "actualconstraint", + "allowedconstraint", + "attachmentconstraint", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "namealiasscheme" + ], + "type": "string", + "default": "none", + "example": null + } + }, + { + "name": "detail", + "in": "query", + "description": "<p>The amount of information to be returned.</p><p>Possible values are:</p><ul><li><code>allstubs</code>: All artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name</li><li><code>referencestubs</code>: Referenced artefacts should be returned as stubs, containing only identification information, as well as the artefacts' name</li><li><code>referencepartial</code>: Referenced item schemes should only include items used by the artefact to be returned. For example, a concept scheme would only contain the concepts used in a DSD, and its isPartial flag would be set to <code>true</code></li><li><code>allcompletestubs</code>: All artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information</li><li><code>referencecompletestubs</code>: Referenced artefacts should be returned as complete stubs, containing identification information, the artefacts' name, description, annotations and isFinal information</li><li><code>full</code>: All available information for all artefacts should be returned</li></ul>", + "schema": { + "enum": [ + "allstubs", + "referencestubs", + "referencepartial", + "allcompletestubs", + "referencecompletestubs", + "full" + ], + "type": "string", + "default": "full", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "description": "<p>Specifies whether the response should be compressed and how.</p><p><code>identity</code> (the default) indicates that no compression will be performed.</p>", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + }, + "put": { + "tags": [ + "Structure actions" + ], + "summary": "Replaces the specified structure stream.", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The structure.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "agencyId", + "in": "path", + "description": "The agency identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "The resource identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "description": "The version.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + }, + "delete": { + "tags": [ + "Structure actions" + ], + "summary": "Deletes the specified structure.", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The structure.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "agencyId", + "in": "path", + "description": "The agency identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "The resource identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "description": "The version.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/structure": { + "post": { + "tags": [ + "Structure actions" + ], + "summary": "Append the specified structure stream.", + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v1/structure": { + "post": { + "tags": [ + "Structure actions" + ], + "summary": "Append the specified structure stream.", + "parameters": [ + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + } + }, + "components": { } +} \ No newline at end of file diff --git a/swagger/openapi-files/swagger-nsiws-v2.json b/swagger/openapi-files/swagger-nsiws-v2.json new file mode 100644 index 0000000..015cef9 --- /dev/null +++ b/swagger/openapi-files/swagger-nsiws-v2.json @@ -0,0 +1,1663 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "SDMX RESTful API, v2.0.0", + "description": "<p>The RESTful API for SDMX 3.0.</p><p>For additional information, check the <a rel='noopener noreferrer' target='_blank' href='https://github.com/sdmx-twg/sdmx-rest/tree/develop/v2_1/ws/rest/docs'>documentation</a>.</p>", + "version": "v2" + }, + "servers": [ + { + "description": "UBA Data Cube", + "url": "https://daten.uba.de/release" + }, + { + "description": "UBA Data Cube Design Space", + "url": "https://daten.uba.de/design" + } + ], + "paths": { + "/rest/v2/availability/{context}/{agencyId}/{resourceId}/{version}/{key}/{componentId}": { + "get": { + "tags": [ + "Data availability queries" + ], + "summary": "Data availability queries", + "description": "See which data would match a query, without actually retrieving these data.\r\n \r\nThis can be used, for example, to build a data query form that enables users of the UI to create a data query by selecting dimension values. \r\nFor example the user is able to click 'Reporting Country' and then select the codes 'United Kingdom', 'Greece', and 'Switzerland'.\r\n \r\nThe query returns a ```Constraint```, i.e. structural metadata, and is therefore similar to the other structural metadata queries but \r\nthe query itself is more akin to a data query.", + "parameters": [ + { + "name": "context", + "in": "path", + "description": "The context for data retrieval. All possible contexts can be selected using <code>*</code>.", + "required": true, + "schema": { + "enum": [ + "dataflow", + "datastructure", + "provisionagreement", + "*" + ], + "type": "string", + "default": "*", + "example": null + } + }, + { + "name": "agencyId", + "in": "path", + "description": "<p>The maintainer(s) of the artefacts.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available maintainers.</p>", + "required": true, + "schema": { + "type": "string", + "default": "*" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "<p>The artefact ID(s).</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>", + "required": true, + "schema": { + "type": "string", + "default": "*" + } + }, + { + "name": "version", + "in": "path", + "description": "<p>The version(s) of the artefact.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>\r\n<p>\r\n ```+``` can be used to retrieve the latest stable version.</p>\r\n<p>\r\n ```~``` can be used to retrieve the latest version, regardless of its status (stable, draft, etc.).</p>", + "required": true, + "schema": { + "type": "string", + "default": "*" + } + }, + { + "name": "key", + "in": "path", + "description": "<p>The combination of dimension values identifying series or slices of the cube (for example ```D.USD.EUR.SP00.A```).</p>\r\n<p>Multiple values are possible. Wildcards are supported using ```*``` (```D.*.EUR.SP00.A```).</p>", + "required": true, + "schema": { + "type": "string", + "default": "*" + } + }, + { + "name": "componentId", + "in": "path", + "description": "<p>The ID of the dimension for which to obtain availability information.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available dimensions.</p>", + "required": true, + "schema": { + "type": "string", + "default": "*" + } + }, + { + "name": "c", + "in": "query", + "description": "<div class=\"renderedMarkdown\"><p>Filter data by component value (e.g. <code>c[FREQ]=A</code>).</p><p>Multiple values are supported.</p><p>In addition, operators may be used:</p><table><thead><tr><th>Operator</th><th>Meaning</th><th>Note</th></tr></thead><tbody><tr><td>eq</td><td>Equals</td><td>Default if no operator is specified and there is only one value (e.g. <code>c[FREQ]=M</code> is equivalent to <code>c[FREQ]=eq:M</code>)</td></tr><tr><td>ne</td><td>Not equal to</td></tr><tr><td>lt</td><td>Less than</td></tr><tr><td>le</td><td>Less than or equal to</td></tr><tr><td>gt</td><td>Greater than</td></tr><tr><td>ge</td><td>Greater than or equal to</td></tr><tr><td>co</td><td>Contains</td></tr><tr><td>nc</td><td>Does not contain</td></tr><tr><td>sw</td><td>Starts with</td></tr><tr><td>ew</td><td>Ends with</td></tr></tbody></table><p>Operators appear as prefix to the component value(s) and are separated from it by a <code>:</code> (e.g. <code>c[TIME_PERIOD]=ge:2020-01+le:2020-12</code>).</p></div>", + "style": "deepObject", + "schema": { + "type": "object", + "example": "{ \"TIME_PERIOD\": \"ge:2020-01+le:2020-12\", \"FREQ\": \"M\" }" + } + }, + { + "name": "mode", + "in": "query", + "description": "Instructs the web service to return a ContentConstraint which defines a Cube Region containing values which will be returned by executing the query (<code>exact</code>) vs a Cube Region showing what values remain valid selections that could be added to the data query (<code>available</code>).", + "schema": { + "enum": [ + "exact", + "available" + ], + "type": "string", + "default": "exact", + "example": null + } + }, + { + "name": "references", + "in": "query", + "description": "Instructs the web service to return (or not) the artefacts referenced by the ContentConstraint to be returned.<p>Multiple values are supported.</p>", + "schema": { + "type": "array", + "items": { + "enum": [ + "none", + "all", + "datastructure", + "conceptscheme", + "codelist", + "dataproviderscheme", + "dataflow" + ], + "type": "string" + }, + "example": null + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "The last time the query was performed by the client.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v2/availability/{context}/{agencyId}/{resourceId}/{version}/body/{componentId}": { + "post": { + "tags": [ + "Data availability queries" + ], + "summary": "Data availability queries", + "description": "Same applicability as the GET method.\r\nThe POST method is used to include the 'key' argument in the body of query in order to workaround URL size limitations.\r\n \r\nUse and set the Content-Type HTTP header to ```application/x-www-form-urlencoded```", + "parameters": [ + { + "name": "context", + "in": "path", + "description": "The context for data retrieval. All possible contexts can be selected using <code>*</code>.", + "required": true, + "schema": { + "enum": [ + "dataflow", + "datastructure", + "provisionagreement", + "*" + ], + "type": "string", + "default": "*", + "example": null + } + }, + { + "name": "agencyId", + "in": "path", + "description": "<p>The maintainer(s) of the artefacts.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available maintainers.</p>", + "required": true, + "schema": { + "type": "string", + "default": "*" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "<p>The artefact ID(s).</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>", + "required": true, + "schema": { + "type": "string", + "default": "*" + } + }, + { + "name": "version", + "in": "path", + "description": "<p>The version(s) of the artefact.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>\r\n<p>\r\n ```+``` can be used to retrieve the latest stable version.</p>\r\n<p>\r\n ```~``` can be used to retrieve the latest version, regardless of its status (stable, draft, etc.).</p>", + "required": true, + "schema": { + "type": "string", + "default": "*" + } + }, + { + "name": "componentId", + "in": "path", + "description": "<p>The ID of the dimension for which to obtain availability information.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available dimensions.</p>", + "required": true, + "schema": { + "type": "string", + "default": "*" + } + }, + { + "name": "c", + "in": "query", + "description": "<div class=\"renderedMarkdown\"><p>Filter data by component value (e.g. <code>c[FREQ]=A</code>).</p><p>Multiple values are supported.</p><p>In addition, operators may be used:</p><table><thead><tr><th>Operator</th><th>Meaning</th><th>Note</th></tr></thead><tbody><tr><td>eq</td><td>Equals</td><td>Default if no operator is specified and there is only one value (e.g. <code>c[FREQ]=M</code> is equivalent to <code>c[FREQ]=eq:M</code>)</td></tr><tr><td>ne</td><td>Not equal to</td></tr><tr><td>lt</td><td>Less than</td></tr><tr><td>le</td><td>Less than or equal to</td></tr><tr><td>gt</td><td>Greater than</td></tr><tr><td>ge</td><td>Greater than or equal to</td></tr><tr><td>co</td><td>Contains</td></tr><tr><td>nc</td><td>Does not contain</td></tr><tr><td>sw</td><td>Starts with</td></tr><tr><td>ew</td><td>Ends with</td></tr></tbody></table><p>Operators appear as prefix to the component value(s) and are separated from it by a <code>:</code> (e.g. <code>c[TIME_PERIOD]=ge:2020-01+le:2020-12</code>).</p></div>", + "style": "deepObject", + "schema": { + "type": "object", + "example": "{ \"TIME_PERIOD\": \"ge:2020-01+le:2020-12\", \"FREQ\": \"M\" }" + } + }, + { + "name": "mode", + "in": "query", + "description": "Instructs the web service to return a ContentConstraint which defines a Cube Region containing values which will be returned by executing the query (<code>exact</code>) vs a Cube Region showing what values remain valid selections that could be added to the data query (<code>available</code>).", + "schema": { + "enum": [ + "exact", + "available" + ], + "type": "string", + "default": "exact", + "example": null + } + }, + { + "name": "references", + "in": "query", + "description": "Instructs the web service to return (or not) the artefacts referenced by the ContentConstraint to be returned.<p>Multiple values are supported.</p>", + "schema": { + "type": "array", + "items": { + "enum": [ + "none", + "all", + "datastructure", + "conceptscheme", + "codelist", + "dataproviderscheme", + "dataflow" + ], + "type": "string" + }, + "example": null + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "The last time the query was performed by the client.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string" + } + } + }, + "encoding": { + "key": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/vnd.sdmx.structure+xml; version=2.1": { }, + "application/vnd.sdmx.structure+xml; version=2.0": { }, + "application/xml; version=2.1": { }, + "text/xml; version=2.1": { }, + "application/rdf+xml": { }, + "application/vnd.sdmx.structure+json;version=1.0": { }, + "application/vnd.sdmx.structure+json;version=1.0.0-wd": { }, + "text/json": { }, + "application/json": { } + } + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v2/data/{context}/{agencyId}/{resourceId}/{version}/{key}": { + "get": { + "tags": [ + "Data queries" + ], + "summary": "Data queries", + "description": "<p>Data queries allow <strong>retrieving statistical data</strong>.</p>\r\n<p>Entire datasets can be retrieved or individual observations, or anything in between, using filters on dimensions (including time), attributes and/or measures.</p>\r\n<p>All data matching a query can be retrieved or only the data that has changed since the last time the same query was performed.</p>\r\n<p>Using the <em>includeHistory</em> parameter, it is also possible to retrieve previous versions of the data.</p>\r\n<p>Last but not least, the data retrieved can be packaged in different ways (as time series, cross-sections or as a table), in a variety of formats (JSON, XML, CSV, etc.).</p>", + "parameters": [ + { + "name": "context", + "in": "path", + "description": "The context for data retrieval. All possible contexts can be selected using <code>*</code>.", + "required": true, + "schema": { + "enum": [ + "dataflow", + "datastructure", + "provisionagreement", + "*" + ], + "type": "string", + "default": "*", + "example": null + } + }, + { + "name": "agencyId", + "in": "path", + "description": "<p>The maintainer(s) of the artefacts.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available maintainers.</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "<p>The artefact ID(s).</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "description": "<p>The version(s) of the artefact.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>\r\n<p>\r\n ```+``` can be used to retrieve the latest stable version.</p>\r\n<p>\r\n ```~``` can be used to retrieve the latest version, regardless of its status (stable, draft, etc.).</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "key", + "in": "path", + "description": "<p>The combination of dimension values identifying series or slices of the cube (for example ```D.USD.EUR.SP00.A```).</p>\r\n<p>Multiple values are possible. Wildcards are supported using ```*``` (```D.*.EUR.SP00.A```).</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "c", + "in": "query", + "description": "<div class=\"renderedMarkdown\"><p>Filter data by component value (e.g. <code>c[FREQ]=A</code>).</p><p>Multiple values are supported.</p><p>In addition, operators may be used:</p><table><thead><tr><th>Operator</th><th>Meaning</th><th>Note</th></tr></thead><tbody><tr><td>eq</td><td>Equals</td><td>Default if no operator is specified and there is only one value (e.g. <code>c[FREQ]=M</code> is equivalent to <code>c[FREQ]=eq:M</code>)</td></tr><tr><td>ne</td><td>Not equal to</td></tr><tr><td>lt</td><td>Less than</td></tr><tr><td>le</td><td>Less than or equal to</td></tr><tr><td>gt</td><td>Greater than</td></tr><tr><td>ge</td><td>Greater than or equal to</td></tr><tr><td>co</td><td>Contains</td></tr><tr><td>nc</td><td>Does not contain</td></tr><tr><td>sw</td><td>Starts with</td></tr><tr><td>ew</td><td>Ends with</td></tr></tbody></table><p>Operators appear as prefix to the component value(s) and are separated from it by a <code>:</code> (e.g. <code>c[TIME_PERIOD]=ge:2020-01+le:2020-12</code>).</p></div>", + "style": "deepObject", + "schema": { + "type": "object", + "example": "{ \"TIME_PERIOD\": \"ge:2020-01+le:2020-12\", \"FREQ\": \"M\" }" + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "The last time the query was performed by the client.", + "schema": { + "type": "data-time string", + "example": null + } + }, + { + "name": "firstNObservations", + "in": "query", + "description": "The maximum number of observations to be returned for each of the matching series, starting from the first observation.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "lastNObservations", + "in": "query", + "description": "The maximum number of observations to be returned for each of the matching series, counting back from the most recent observation.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "dimensionAtObservation", + "in": "query", + "description": "The ID of the dimension to be attached at the observation level.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "attributes", + "in": "query", + "description": "<p>This parameter specifies the attributes to be returned. Possible options are: <code>dsd</code> (all the attributes defined in the data structure definition), <code>msd</code> (all the reference metadata attributes), <code>dataset</code> (all the attributes attached to the dataset-level), <code>series</code> (all the attributes attached to the series-level), <code>obs</code> (all the attributes attached to the observation-level), <code>all</code> (all attributes), <code>none</code> (no attributes), <code>{attribute_id}</code>: The ID of one or more attributes the caller is interested in.</p>", + "schema": { + "enum": [ + "all", + "none", + "dsd", + "msd" + ], + "type": "string", + "default": "dsd", + "example": null + } + }, + { + "name": "measures", + "in": "query", + "description": "<p>This parameter specifies the measures to be returned. Possible options are: <code>all</code> (all measures), <code>none</code> (no measure), <code>{measure_id}</code>: The ID of one or more measures the caller is interested in.</p>", + "schema": { + "enum": [ + "all", + "none" + ], + "type": "string", + "default": "all", + "example": null + } + }, + { + "name": "includeHistory", + "in": "query", + "description": "This attribute allows retrieving previous versions of the data, as they were disseminated in the past (<em>history</em> or <em>timeline</em> functionality).", + "schema": { + "type": "boolean", + "default": "false", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "x-level", + "in": "header", + "description": "<p>This parameter specifies the level of metadata to be returned. Possible options are: <ul><li>all - all user filtered dims: value or '~', all non filtered dims: no filter applied</li><li>upperOnly - all user filtered dims: value or '~', all non filtered dims: is '~'</li><li>currentOnly - all user filtered dims: value, all non filtered dims: is '~'</li></ul></p>", + "schema": { + "enum": [ + "all", + "upperOnly", + "currentOnly" + ], + "type": "string", + "default": "all", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v2/data/{context}/{agencyId}/{resourceId}/{version}/body": { + "post": { + "tags": [ + "Data queries" + ], + "summary": "Data queries", + "description": "Same applicability as the GET method.\r\nThe POST method is used to include the 'key' argument in the body of query in order to workaround URL size limitations.\r\n \r\nUse and set the Content-Type HTTP header to ```application/x-www-form-urlencoded```", + "parameters": [ + { + "name": "context", + "in": "path", + "description": "The context for data retrieval. All possible contexts can be selected using <code>*</code>.", + "required": true, + "schema": { + "enum": [ + "dataflow", + "datastructure", + "provisionagreement", + "*" + ], + "type": "string", + "default": "*", + "example": null + } + }, + { + "name": "agencyId", + "in": "path", + "description": "<p>The maintainer(s) of the artefacts.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available maintainers.</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "<p>The artefact ID(s).</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "description": "<p>The version(s) of the artefact.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>\r\n<p>\r\n ```+``` can be used to retrieve the latest stable version.</p>\r\n<p>\r\n ```~``` can be used to retrieve the latest version, regardless of its status (stable, draft, etc.).</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "c", + "in": "query", + "description": "<div class=\"renderedMarkdown\"><p>Filter data by component value (e.g. <code>c[FREQ]=A</code>).</p><p>Multiple values are supported.</p><p>In addition, operators may be used:</p><table><thead><tr><th>Operator</th><th>Meaning</th><th>Note</th></tr></thead><tbody><tr><td>eq</td><td>Equals</td><td>Default if no operator is specified and there is only one value (e.g. <code>c[FREQ]=M</code> is equivalent to <code>c[FREQ]=eq:M</code>)</td></tr><tr><td>ne</td><td>Not equal to</td></tr><tr><td>lt</td><td>Less than</td></tr><tr><td>le</td><td>Less than or equal to</td></tr><tr><td>gt</td><td>Greater than</td></tr><tr><td>ge</td><td>Greater than or equal to</td></tr><tr><td>co</td><td>Contains</td></tr><tr><td>nc</td><td>Does not contain</td></tr><tr><td>sw</td><td>Starts with</td></tr><tr><td>ew</td><td>Ends with</td></tr></tbody></table><p>Operators appear as prefix to the component value(s) and are separated from it by a <code>:</code> (e.g. <code>c[TIME_PERIOD]=ge:2020-01+le:2020-12</code>).</p></div>", + "style": "deepObject", + "schema": { + "type": "object", + "example": "{ \"TIME_PERIOD\": \"ge:2020-01+le:2020-12\", \"FREQ\": \"M\" }" + } + }, + { + "name": "updatedAfter", + "in": "query", + "description": "The last time the query was performed by the client.", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + }, + { + "name": "firstNObservations", + "in": "query", + "description": "The maximum number of observations to be returned for each of the matching series, starting from the first observation.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "lastNObservations", + "in": "query", + "description": "The maximum number of observations to be returned for each of the matching series, counting back from the most recent observation.", + "schema": { + "type": "integer", + "example": null + } + }, + { + "name": "dimensionAtObservation", + "in": "query", + "description": "The ID of the dimension to be attached at the observation level.", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "attributes", + "in": "query", + "description": "<p>This parameter specifies the attributes to be returned. Possible options are: <code>dsd</code> (all the attributes defined in the data structure definition), <code>msd</code> (all the reference metadata attributes), <code>dataset</code> (all the attributes attached to the dataset-level), <code>series</code> (all the attributes attached to the series-level), <code>obs</code> (all the attributes attached to the observation-level), <code>all</code> (all attributes), <code>none</code> (no attributes), <code>{attribute_id}</code>: The ID of one or more attributes the caller is interested in.</p>", + "schema": { + "enum": [ + "all", + "none", + "dsd", + "msd" + ], + "type": "string", + "default": "dsd", + "example": null + } + }, + { + "name": "measures", + "in": "query", + "description": "<p>This parameter specifies the measures to be returned. Possible options are: <code>all</code> (all measures), <code>none</code> (no measure), <code>{measure_id}</code>: The ID of one or more measures the caller is interested in.</p>", + "schema": { + "enum": [ + "all", + "none" + ], + "type": "string", + "default": "all", + "example": null + } + }, + { + "name": "includeHistory", + "in": "query", + "description": "This attribute allows retrieving previous versions of the data, as they were disseminated in the past (<em>history</em> or <em>timeline</em> functionality).", + "schema": { + "type": "boolean", + "default": "false", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string" + } + } + }, + "encoding": { + "key": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v2/structure/{structure}/{agencyId}/{resourceId}/{version}/{itemId}": { + "get": { + "tags": [ + "Structure queries" + ], + "summary": "Item Scheme queries", + "description": "Item queries extend structure queries by allowing to retrieve items in item schemes such as particular codes in a codelist.", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The type of item scheme (e.g. codelist, agencyscheme, etc.)", + "required": true, + "schema": { + "enum": [ + "conceptscheme", + "codelist", + "categoryscheme", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "vtlmappingscheme", + "valuelist", + "structure" + ], + "type": "string", + "default": "structure", + "example": null + } + }, + { + "name": "agencyId", + "in": "path", + "description": "<p>The maintainer(s) of the artefacts.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available maintainers.</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "<p>The artefact ID(s).</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "description": "<p>The version(s) of the artefact.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>\r\n<p>\r\n ```+``` can be used to retrieve the latest stable version.</p>\r\n<p>\r\n ```~``` can be used to retrieve the latest version, regardless of its status (stable, draft, etc.).</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "itemId", + "in": "path", + "description": "<p>The id of the item to be returned.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all items.</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "references", + "in": "query", + "description": "Instructs the web service to return (or not) the artefacts referenced by the artefact to be returned (for example, the code lists and concepts used by the data structure definition matching the query), as well as the artefacts that use the matching artefact (for example, the dataflows that use the data structure definition matching the query).", + "schema": { + "type": "array", + "items": { + "enum": [ + "none", + "parents", + "parentsandsiblings", + "ancestors", + "children", + "descendants", + "all", + "datastructure", + "metadatastructure", + "categoryscheme", + "conceptscheme", + "codelist", + "hierarchy", + "hierarchyassociation", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "dataflow", + "metadataflow", + "reportingtaxonomy", + "provisionagreement", + "structureset", + "process", + "categorisation", + "dataconstraint", + "metadataconstraint", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "namealiasscheme", + "valuelist", + "structuremap", + "representationmap", + "conceptschememap", + "categoryschememap", + "organisationschememap", + "reportingtaxonomymap" + ], + "type": "string" + }, + "default": "none", + "example": null + } + }, + { + "name": "detail", + "in": "query", + "description": "The desired amount of information to be returned.", + "schema": { + "enum": [ + "full", + "allstubs", + "referencestubs", + "allcompletestubs", + "referencecompletestubs", + "referencepartial", + "raw" + ], + "type": "string", + "default": "full", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v2/structure/{structure}/{agencyId}/{resourceId}/{version}": { + "get": { + "tags": [ + "Structure queries" + ], + "summary": "Structure queries", + "description": "Structure queries allow <strong>retrieving structural metadata</strong>.\r\n \r\nStructure queries in SDMX allow you to retrieve structural metadata at various levels of granularity,\r\nfrom all structural metadata available in the source to a single code from a particular version of a particular codelist maintained by a particular agency.", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The type of structural metadata (e.g. codelist, dataflow, etc.)", + "required": true, + "schema": { + "enum": [ + "datastructure", + "metadatastructure", + "dataflow", + "metadataflow", + "provisionagreement", + "structureset", + "process", + "categorisation", + "dataconstraint", + "metadataconstraint", + "conceptscheme", + "codelist", + "categoryscheme", + "hierarchy", + "hierarchyassociation", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "vtlmappingscheme", + "valuelist", + "structuremap", + "representationmap", + "conceptschememap", + "categoryschememap", + "organisationschememap", + "reportingtaxonomymap", + "structure" + ], + "type": "string", + "default": "structure", + "example": null + } + }, + { + "name": "agencyId", + "in": "path", + "description": "<p>The maintainer(s) of the artefacts.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available maintainers.</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "<p>The artefact ID(s).</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "description": "<p>The version(s) of the artefact.</p>\r\n<p>Multiple values are possible (separated by commas) and ```*``` can be used as shortcut to select all available artefacts.</p>\r\n<p>\r\n ```+``` can be used to retrieve the latest stable version.</p>\r\n<p>\r\n ```~``` can be used to retrieve the latest version, regardless of its status (stable, draft, etc.).</p>", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "references", + "in": "query", + "description": "Instructs the web service to return (or not) the artefacts referenced by the artefact to be returned (for example, the code lists and concepts used by the data structure definition matching the query), as well as the artefacts that use the matching artefact (for example, the dataflows that use the data structure definition matching the query).", + "schema": { + "type": "array", + "items": { + "enum": [ + "none", + "parents", + "parentsandsiblings", + "ancestors", + "children", + "descendants", + "all", + "datastructure", + "metadatastructure", + "categoryscheme", + "conceptscheme", + "codelist", + "hierarchy", + "hierarchyassociation", + "agencyscheme", + "dataproviderscheme", + "dataconsumerscheme", + "organisationunitscheme", + "dataflow", + "metadataflow", + "reportingtaxonomy", + "provisionagreement", + "structureset", + "process", + "categorisation", + "dataconstraint", + "metadataconstraint", + "transformationscheme", + "rulesetscheme", + "userdefinedoperatorscheme", + "customtypescheme", + "namepersonalisationscheme", + "namealiasscheme", + "valuelist", + "structuremap", + "representationmap", + "conceptschememap", + "categoryschememap", + "organisationschememap", + "reportingtaxonomymap" + ], + "type": "string" + }, + "default": "none", + "example": null + } + }, + { + "name": "detail", + "in": "query", + "description": "The desired amount of information to be returned.", + "schema": { + "enum": [ + "full", + "allstubs", + "referencestubs", + "allcompletestubs", + "referencecompletestubs", + "referencepartial", + "raw" + ], + "type": "string", + "default": "full", + "example": null + } + }, + { + "name": "accept-encoding", + "in": "header", + "schema": { + "enum": [ + "br", + "compress", + "deflate", + "exi", + "gzip", + "identity", + "pack200-gzip", + "zstd" + ], + "type": "string", + "default": "identity", + "example": null + } + }, + { + "name": "accept-language", + "in": "header", + "schema": { + "type": "string", + "example": null + } + }, + { + "name": "if-modified-since", + "in": "header", + "schema": { + "type": "string", + "format": "date-time", + "example": null + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + }, + "put": { + "tags": [ + "Structure actions" + ], + "summary": "Replaces the specified structure stream.", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The structure.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "agencyId", + "in": "path", + "description": "The agency identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "The resource identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "description": "The version.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + }, + "delete": { + "tags": [ + "Structure actions" + ], + "summary": "Deletes the specified structure.", + "parameters": [ + { + "name": "structure", + "in": "path", + "description": "The structure.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "agencyId", + "in": "path", + "description": "The agency identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "resourceId", + "in": "path", + "description": "The resource identifier.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "description": "The version.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + }, + "/rest/v2/structure": { + "post": { + "tags": [ + "Structure actions" + ], + "summary": "Append the specified structure stream.", + "parameters": [ + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "304": { + "description": "No changes" + }, + "400": { + "description": "Bad syntax" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "406": { + "description": "Not acceptable" + }, + "413": { + "description": "Request entity too large" + }, + "414": { + "description": "Uri too long" + }, + "500": { + "description": "Internal server error" + }, + "501": { + "description": "Not implemented" + }, + "503": { + "description": "Service unavailable" + } + } + } + } + }, + "components": { } +} \ No newline at end of file diff --git a/swagger/openapi-files/swagger-transfer-v1.2.json b/swagger/openapi-files/swagger-transfer-v1.2.json new file mode 100644 index 0000000..a513346 --- /dev/null +++ b/swagger/openapi-files/swagger-transfer-v1.2.json @@ -0,0 +1,1986 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "Transfer service", + "description": "The .Stat Suite Core Transfer service provides a .Stat Core data storage API for: \n <ul>\n <li>Upload of SDMX data and/or referential metadata files (csv, xml) into a .Stat Core data storage.</li>\n <li>Upload of Excel data and/or referential metadata files (using a specific data mapping definition) into a .Stat Core data storage.</li>\n <li>Transfer of data and/or referential metadata between two .Stat Core data storages.</li>\n </ul>\n <br>See the <a href='https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-core-transfer/-/tree/master'>full API documentation</a> and the <a href='https://sis-cc.gitlab.io/dotstatsuite-documentation/using-api/'>functional specifications of the .Stat Suite APIs</a>.", + "license": { + "name": "MIT License", + "url": "https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-core-transfer/-/blob/master/LICENSE" + }, + "version": "1.2" + }, + "servers": [ + { + "description": "UBA Data Cube ", + "url": "https://daten.uba.de/transfer" + } + ], + "paths": { + "/1.2/cleanup/orphans": { + "delete": { + "tags": [ + "CleanUp" + ], + "summary": "Delete all Data DB entries of orphan DSDs and its linked MSDs in the data database for a given dataspace", + "description": "Example: Delete all orphan DSDs and its linked MSDs in the dataspace 'design'\r\n\r\n DELETE /cleanup/orphans\r\n {\r\n \"dataspace\": \"design\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where the orphan DSDs should be removed. <br></br> Example: <code>design</code>" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Cleanup succeeded", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict. There is an ongoing transaction for a DSD" + }, + "207": { + "description": "Multi-Status, containing http status codes 200 and 409" + } + } + } + }, + "/1.2/cleanup/dsd": { + "delete": { + "tags": [ + "CleanUp" + ], + "summary": "Delete a given DSD and all its child artefacts or only its linked MSD, from the data database, and for a given dataspace", + "description": "Example: Delete the DSD 'OECD:MEI(1.0)' and all its child artefacts from the 'design' dataspace\r\n\r\n DELETE /cleanup/dsd\r\n {\r\n \"dataspace\": \"design\",\r\n \"dsd\": \"OECD:MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "dsd" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where the DSD should be cleaned. <br></br> Example: <code>design</code>" + }, + "dsd": { + "type": "string", + "description": "The SDMX ID of the DSD to be deleted <br></br> Format: 'AGENCYID:DSD ID(VERSION)' <br></br> Example: <code>OECD:MEI(1.0)</code>" + }, + "cleanupMsdOnly": { + "type": "boolean", + "description": "Optional - Indicate if <b>only</b> the linked MSD should be cleaned. By default, it is set to false.", + "default": false, + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dsd": { + "style": "form" + }, + "cleanupMsdOnly": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Cleanup succeeded", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict. There is an ongoing transaction targeting the DSD" + } + } + } + }, + "/1.2/cleanup/mappingsets": { + "delete": { + "tags": [ + "CleanUp" + ], + "summary": "Delete all mappingsets and datasets stored in the Mapping Store DB for a given dataflow and a given dataspace", + "description": "Example: Delete the mappingsets of the dataflow 'OECD:DF_MEI(1.0)' in the 'design' dataspace\r\n\r\n DELETE /cleanup/mappingsets\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where the mappingsets should be cleaned. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow for which the mappingsets should be deleted <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)' <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Cleanup succeeded", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict. There is an ongoing transaction targeting the DSD" + } + } + } + }, + "/1.2/init/dataflow": { + "post": { + "tags": [ + "DataManagement" + ], + "summary": "Initialise or repair DB objects of a dataflow in a given datastore DB (creates all Data DB objects - or repair missing/broken structures - required for the dataflow usage for extractions, and generates an empty actual content constraint for the dataflow)", + "description": "Example: Initialise the database objects of the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /init/dataflow\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to initialize the db objects. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow.<br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Not authorized.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "201": { + "description": "Initialisation or repair successfully completed" + }, + "409": { + "description": "Conflict. There is an ongoing transaction targeting the DSD of the dataflow" + } + } + } + }, + "/1.2/init/allMappingsets": { + "post": { + "tags": [ + "DataManagement" + ], + "summary": "Create Mappingsets of all dataflows in the mappingstore database for a given dataspace", + "description": "Example: Create mappingsets for all dataflows found in the 'design' dataspace\r\n\r\n POST /init/allMappingsets\r\n {\r\n \"dataspace\": \"design\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to initialise the mappingsets. <br></br> Example: <code>design</code>" + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Send email options: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0 + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Successfully completed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Not authorized.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/1.2/import/excel": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit an import request of data or referential metadata from EDD + Excel files into provided dataspace", + "description": "Example: Advance validation import to the 'design' dataspace, using the eddFile 'importexample_EDD.xml' and the Excel file 'dataexample.xlsx'\r\n\r\n POST /import/excel\r\n {\r\n \"dataspace\": \"design\",\r\n \"eddFile\": \"importexample_EDD.xml\", \r\n \"excelFile\": \"dataexample.xlsx\",\r\n \"validationType\": 1\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "eddFile", + "excelFile" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "eddFile": { + "type": "string", + "description": "A XML edd file containing the description of the Excel file to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "excelFile": { + "type": "string", + "description": "An Excel file containing the data/referential metadata values to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + }, + "PITReleaseDate": { + "type": "string", + "description": "Optional - Point in time release date <br></br> Format (YYYY-MM-DDThh:mm:ss.sTZD) <br></br>Example: <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "restorationOptionRequired": { + "type": "boolean", + "description": "Optional - Indicate if the current LIVE version should be kept for restoration purposes when PIT release becomes active", + "nullable": true + }, + "validationType": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The type of validation to use during import: <br></br>Possible values: Import With <b>Basic Validation (0)</b>, Import With <b>Advanced Validation (1)</b>, Default (Import With Basic Validation)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "eddFile": { + "style": "form" + }, + "excelFile": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + }, + "PITReleaseDate": { + "style": "form" + }, + "restorationOptionRequired": { + "style": "form" + }, + "validationType": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Import task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/1.2/validate/excel": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit a validation of an import request of data or referential metadata from EDD + Excel files into provided dataspace", + "description": "Example: Validation of an import to the 'design' dataspace, using the eddFile 'importexample_EDD.xml' and the Excel file 'dataexample.xlsx'\r\n\r\n POST /validate/excel\r\n {\r\n \"dataspace\": \"design\",\r\n \"eddFile\": \"importexample_EDD.xml\", \r\n \"excelFile\": \"dataexample.xlsx\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "eddFile", + "excelFile" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "eddFile": { + "type": "string", + "description": "A XML edd file containing the description of the Excel file to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "excelFile": { + "type": "string", + "description": "An Excel file containing the data/referential metadata values to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "eddFile": { + "style": "form" + }, + "excelFile": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Validation task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/1.2/import/sdmxFile": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit an import request of data or referential metadata from SDMX file (xml|csv) into provided dataspace", + "description": "Example: Advanced validation import to the 'design' dataspace, using the CSV file 'dataexample.csv'\r\n\r\n POST /import/sdmxFile\r\n {\r\n \"dataspace\": \"design\",\r\n \"file\": \"dataexample.csv\",\r\n \"validationType\": 1\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "Obsolete - The artefact value is now directly read from the input file", + "nullable": true + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code used for the response message/email and the decimal separators used in CSV file.<br></br>Example: <code>en</code>", + "nullable": true + }, + "filepath": { + "type": "string", + "description": "Optional - The remote location (path/url) of the input file, containing the data or referential metadata to be imported. <br></br>Make sure that the remote file is accessible by the transfer-service", + "nullable": true + }, + "file": { + "type": "string", + "description": "Optional - When no filepath is given, The input SDMX data/referential metadata file to be imported/validated. <br></br>A maximum size file limit might apply", + "format": "binary", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + }, + "PITReleaseDate": { + "type": "string", + "description": "Optional - Point in time release date <br></br> Format (YYYY-MM-DDThh:mm:ss.sTZD) <br></br>Example: <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "restorationOptionRequired": { + "type": "boolean", + "description": "Optional - Indicate if the current LIVE version should be kept for restoration purposes when PIT release becomes active", + "nullable": true + }, + "validationType": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The type of validation to use during import: <br></br> Possible values: Import With <b>Basic Validation (0)</b>, Import With <b>Advanced Validation (1)</b>, Default (Import With Basic Validation)", + "format": "int32", + "nullable": true + }, + "authenticateToRemoteURL": { + "type": "boolean", + "description": "When using a remote URL that is a .Stat Suite data space using the same identity provider instance than this transfer service, set this parameter to true to authenticate you against that source data space.", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "filepath": { + "style": "form" + }, + "file": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + }, + "PITReleaseDate": { + "style": "form" + }, + "restorationOptionRequired": { + "style": "form" + }, + "validationType": { + "style": "form" + }, + "authenticateToRemoteURL": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Import task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/1.2/validate/sdmxFile": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit a validation of an import request of data or referential metadata from SDMX file (xml|csv) to a given dataspace", + "description": "Example: Make a validation request to the 'design' dataspace, using the CSV file 'dataexample.csv'\r\n\r\n POST /validate/sdmxFile\r\n {\r\n \"dataspace\": \"design\",\r\n \"file\": \"dataexample.csv\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "Obsolete - The artefact value is now directly read from the input file", + "nullable": true + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code used for the response message/email and the decimal separators used in CSV file.<br></br>Example: <code>en</code>", + "nullable": true + }, + "filepath": { + "type": "string", + "description": "Optional - The remote location (path/url) of the input file, containing the data or referential metadata to be imported. <br></br>Make sure that the remote file is accessible by the transfer-service", + "nullable": true + }, + "file": { + "type": "string", + "description": "Optional - When no filepath is given, The input SDMX data/referential metadata file to be imported/validated. <br></br>A maximum size file limit might apply", + "format": "binary", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "filepath": { + "style": "form" + }, + "file": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Import task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/1.2/pointintime/PITInfo": { + "post": { + "tags": [ + "PointInTime" + ], + "summary": "Get the Point-In-Time information of a dataflow for a given dataspace", + "description": "Example: Get the PIT information of the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /pointintime/PITInfo\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to consult the PIT information. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Information successfully retrieved", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/1.2/pointintime/rollback": { + "post": { + "tags": [ + "PointInTime" + ], + "summary": "Perform a Rollback of the Point-In-Time of a dataflow for a given dataspace", + "description": "Example: Perform a rollback of the PIT for the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /pointintime/rollback\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to perform the rollback. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Send email options: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0 + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Rollback successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/1.2/pointintime/restoration": { + "post": { + "tags": [ + "PointInTime" + ], + "summary": "Perform a Restoration of a released PIT version of a dataflow for a given dataspace", + "description": "Example: Restore the previous version of the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /pointintime/restoration\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to perform the restoration. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Send email options: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0 + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Restoration successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/1.2/status/request": { + "post": { + "tags": [ + "Status" + ], + "summary": "Get the transaction status information by transaction ID, for a given dataspace", + "description": "Example: Get the status of the request ID #4 in the 'design' dataspace\r\n\r\n POST /status/request\r\n {\r\n \"dataspace\": \"design\",\r\n \"id\": 4\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "id" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to search for the request. <br></br> Example: <code>design</code>" + }, + "id": { + "type": "integer", + "description": "The transaction ID, received during the submission of the request.<br></br> Example: <code>1</code>,<code>155</code>", + "format": "int32" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "id": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Information successfully retrieved", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not found" + } + } + } + }, + "/1.2/status/requests": { + "post": { + "tags": [ + "Status" + ], + "summary": "Search for transactions and their logs in a given dataspace", + "description": "Example: Get the status of the requests in the 'design' dataspace, for the user email 'email@domain.com' and completed with errors \r\n\r\n POST /status/requests\r\n {\r\n \"dataspace\": \"design\",\r\n \"userEmail\": \"email@domain.com\",\r\n \"executionOutcome\": 2\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to search for the requests. <br></br> Example: <code>design</code>" + }, + "userEmail": { + "type": "string", + "description": "Optional - Filter requests by user email, default (any). <br></br> Example: <code>email@domain.com</code>", + "nullable": true + }, + "artefact": { + "type": "string", + "description": "Optional - Filter requests by SDMX ID artefact, default (any). <br></br>Format: AGENCYID:ARTEFACTID(VERSION)<br></br> Example: <code>OECD:MEI(1.0)</code>, <code>OECD:DF_MEI(1.0)</code>", + "nullable": true + }, + "submissionStart": { + "type": "string", + "description": "Optional - Filter requests by the start Datetime when the import/transfer was requested<br></br> default (24Hrs before now) <br></br> Format: (dd-MM-yyyy HH:mm:ss or YYYY-MM-DDThh:mm:ssTZD)<br></br> Example: <code>04-06-2022 10:16:01</code>, <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "submissionEnd": { + "type": "string", + "description": "Optional - Filter requests by the end Datetime when the import/transfer finished processing<br></br> default (now)<br></br> Format: (dd-MM-yyyy HH:mm:ss or YYYY-MM-DDThh:mm:ssTZD)<br></br> Example: <code>04-06-2022 10:16:01</code>, <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "executionStatus": { + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Optional - Filter requests by its current Status <br></br>Possible values: Queued (0), InProgress (1), Completed (2), TimedOut (3), Canceled (4), default (any)", + "format": "int32", + "nullable": true + }, + "executionOutcome": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "Optional - Filter requests by its final outcome <br></br>Possible values: Success (0), Warning (1), Error (2), None (3), default (any)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "userEmail": { + "style": "form" + }, + "artefact": { + "style": "form" + }, + "submissionStart": { + "style": "form" + }, + "submissionEnd": { + "style": "form" + }, + "executionStatus": { + "style": "form" + }, + "executionOutcome": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Information successfully retrieved", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not found" + } + } + } + }, + "/1.2/transfer/dataflow": { + "post": { + "tags": [ + "Transfer" + ], + "summary": "Transfer data and/or referential metadata from one source dataspace to a destination dataspace.", + "description": "Example: transfer request\r\n\r\n POST /transfer/dataflow\r\n {\r\n \"sourceDataspace\": \"design\",\r\n \"sourceDataflow\": \"OECD:DF_MEI(1.0)\",\r\n \"destinationDataspace\": \"staging\",\r\n \"destinationDataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "destinationDataflow", + "destinationDataspace", + "sourceDataflow", + "sourceDataspace" + ], + "type": "object", + "properties": { + "sourceDataspace": { + "type": "string", + "description": "The ID of the source dataspace. <br></br> Example: <code>design</code>" + }, + "sourceDataflow": { + "type": "string", + "description": "The SDMX ID of the source dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sourceQuery": { + "type": "string", + "description": "Optional - SDMX query to filter the data/referential metadata to be transferred (as provided to the NSIWS to get data) <br></br> Example: <code>\"D.NOK.EUR.SP00.A?startPeriod=2012-01-01&endPeriod=2010-02-01\"</code>", + "nullable": true + }, + "destinationDataspace": { + "type": "string", + "description": "The ID of the destination dataspace. <br></br> Example: <code>staging</code>" + }, + "destinationDataflow": { + "type": "string", + "description": "The SDMX ID of the destination dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "sourceVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used from the <b>source</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used to the <b>destination</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "PITReleaseDate": { + "type": "string", + "description": "Optional - Point in time release date (YYYY-MM-DDThh:mm:ss.sTZD) Example: <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "validationType": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The type of validation to use during import: <br></br>Possible values: Import With <b>Basic Validation (0)</b>, Import With <b>Advanced Validation (1)</b>, Default (Import With Basic Validation)", + "format": "int32", + "nullable": true + }, + "transferContent": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - The content to be transferred across dataspaces: <br></br>Possible values: Transfer <b>both data and referential metadata (0)</b>, Transfer <b>data only (1)</b>, Transfer <b>referential metadata only (2)</b>, Default (Transfer both data and referential metadata)", + "format": "int32", + "default": 0, + "nullable": true + }, + "restorationOptionRequired": { + "type": "boolean", + "description": "Optional - Indicate if the current LIVE version should be kept for restoration purposes when PIT release becomes active", + "default": false, + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0, + "nullable": true + } + } + }, + "encoding": { + "sourceDataspace": { + "style": "form" + }, + "sourceDataflow": { + "style": "form" + }, + "sourceQuery": { + "style": "form" + }, + "destinationDataspace": { + "style": "form" + }, + "destinationDataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "sourceVersion": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "PITReleaseDate": { + "style": "form" + }, + "validationType": { + "style": "form" + }, + "transferContent": { + "style": "form" + }, + "restorationOptionRequired": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Transfer task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/1.2/validate/transferDataflow": { + "post": { + "tags": [ + "Transfer" + ], + "summary": "Validates a transfer of data and/or referential metadata from one source dataspace to a destination dataspace.", + "description": "Example: Validate a transfer request\r\n\r\n POST /validate/transferDataflow\r\n {\r\n \"sourceDataspace\": \"design\",\r\n \"sourceDataflow\": \"OECD:DF_MEI(1.0)\",\r\n \"destinationDataspace\": \"staging\",\r\n \"destinationDataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "destinationDataflow", + "destinationDataspace", + "sourceDataflow", + "sourceDataspace" + ], + "type": "object", + "properties": { + "sourceDataspace": { + "type": "string", + "description": "The ID of the source dataspace. <br></br> Example: <code>design</code>" + }, + "sourceDataflow": { + "type": "string", + "description": "The SDMX ID of the source dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sourceQuery": { + "type": "string", + "description": "Optional - SDMX query to filter the data/referential metadata to be validated (as provided to the NSIWS to get data) <br></br> Example: <code>\"D.NOK.EUR.SP00.A?startPeriod=2012-01-01&endPeriod=2010-02-01\"</code>", + "nullable": true + }, + "destinationDataspace": { + "type": "string", + "description": "The ID of the destination dataspace. <br></br> Example: <code>staging</code>" + }, + "destinationDataflow": { + "type": "string", + "description": "The SDMX ID of the destination dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "sourceVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used from the <b>source</b> dataspace. <br></br>Possible values: Live (0), PIT (1), Default(Live)", + "format": "int32", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used to the <b>destination</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "transferContent": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - The content to be validated across dataspaces: <br></br>Possible values: Transfer <b>both data and referential metadata (0)</b>, Transfer <b>data only (1)</b>, Transfer <b>referential metadata only (2)</b>, Default (Transfer both data and referential metadata)", + "format": "int32", + "default": 0, + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0, + "nullable": true + } + } + }, + "encoding": { + "sourceDataspace": { + "style": "form" + }, + "sourceDataflow": { + "style": "form" + }, + "sourceQuery": { + "style": "form" + }, + "destinationDataspace": { + "style": "form" + }, + "destinationDataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "sourceVersion": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "transferContent": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "The transfer validation task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "OperationResult": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "readOnly": true + }, + "message": { + "type": "string", + "nullable": true + }, + "detail": { + "nullable": true + } + }, + "additionalProperties": false + }, + "ProblemDetails": { + "type": "object", + "properties": { + "type": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "status": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "detail": { + "type": "string", + "nullable": true + }, + "instance": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": { } + } + }, + "securitySchemes": { + "oauth2": { + "type": "oauth2", + "flows": { + "authorizationCode": { + "authorizationUrl": "https://kc.daten.uba.de/realms/dctest/protocol/openid-connect/auth", + "tokenUrl": "https://kc.daten.uba.de/realms/dctest/protocol/openid-connect/token", + "scopes": { + "openid": "openid", + "profile": "profile", + "email": "email" + } + } + } + } + } + }, + "security": [ + { + "oauth2": [ + "openid", + "profile", + "email" + ] + } + ] + } \ No newline at end of file diff --git a/swagger/openapi-files/swagger-transfer-v2.json b/swagger/openapi-files/swagger-transfer-v2.json new file mode 100644 index 0000000..6c665cc --- /dev/null +++ b/swagger/openapi-files/swagger-transfer-v2.json @@ -0,0 +1,2324 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "Transfer service", + "description": "The .Stat Suite Core Transfer service provides a .Stat Core data storage API for: \n <ul>\n <li>Upload of SDMX data and/or referential metadata files (csv, xml) into a .Stat Core data storage.</li>\n <li>Upload of Excel data and/or referential metadata files (using a specific data mapping definition) into a .Stat Core data storage.</li>\n <li>Transfer of data and/or referential metadata between two .Stat Core data storages.</li>\n </ul>\n <br>See the <a href='https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-core-transfer/-/tree/master'>full API documentation</a> and the <a href='https://sis-cc.gitlab.io/dotstatsuite-documentation/using-api/'>functional specifications of the .Stat Suite APIs</a>.", + "license": { + "name": "MIT License", + "url": "https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-core-transfer/-/blob/master/LICENSE" + }, + "version": "2" + }, + "servers": [ + { + "description": "UBA Data Cube ", + "url": "https://daten.uba.de/transfer" + } + ], + "paths": { + "/2/cleanup/orphans": { + "delete": { + "tags": [ + "CleanUp" + ], + "summary": "Delete all Data DB entries of orphan DSDs and its linked MSDs in the data database for a given dataspace", + "description": "Example: Delete all orphan DSDs and its linked MSDs in the dataspace 'design'\r\n\r\n DELETE /cleanup/orphans\r\n {\r\n \"dataspace\": \"design\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where the orphan DSDs should be removed. <br></br> Example: <code>design</code>" + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Send email options: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0 + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Cleanup succeeded", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict. There is an ongoing transaction for a DSD" + }, + "207": { + "description": "Multi-Status, containing http status codes 200 and 409" + } + } + } + }, + "/2/cleanup/dsd": { + "delete": { + "tags": [ + "CleanUp" + ], + "summary": "Delete a given DSD and all its child artefacts or only its linked MSD, from the data database, and for a given dataspace", + "description": "Example: Delete the DSD 'OECD:MEI(1.0)' and all its child artefacts from the 'design' dataspace\r\n\r\n DELETE /cleanup/dsd\r\n {\r\n \"dataspace\": \"design\",\r\n \"dsd\": \"OECD:MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "dsd" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where the DSD should be cleaned. <br></br> Example: <code>design</code>" + }, + "dsd": { + "type": "string", + "description": "The SDMX ID of the DSD to be deleted <br></br> Format: 'AGENCYID:DSD ID(VERSION)' <br></br> Example: <code>OECD:MEI(1.0)</code>" + }, + "cleanupMsdOnly": { + "type": "boolean", + "description": "Optional - Indicate if <b>only</b> the linked MSD should be cleaned. By default, it is set to false.", + "default": false, + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dsd": { + "style": "form" + }, + "cleanupMsdOnly": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Cleanup succeeded", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict. There is an ongoing transaction targeting the DSD" + } + } + } + }, + "/2/cleanup/mappingsets": { + "delete": { + "tags": [ + "CleanUp" + ], + "summary": "Delete all mappingsets and datasets stored in the Mapping Store DB for a given dataflow and a given dataspace", + "description": "Example: Delete the mappingsets of the dataflow 'OECD:DF_MEI(1.0)' in the 'design' dataspace\r\n\r\n DELETE /cleanup/mappingsets\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where the mappingsets should be cleaned. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow for which the mappingsets should be deleted <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)' <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Cleanup succeeded", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict. There is an ongoing transaction targeting the DSD" + } + } + } + }, + "/2/init/dataflow": { + "post": { + "tags": [ + "DataManagement" + ], + "summary": "Initialise or repair DB objects of a dataflow in a given datastore DB (creates all Data DB objects - or repair missing/broken structures - required for the dataflow usage for extractions, and generates an empty actual content constraint for the dataflow)", + "description": "Example: Initialise the database objects of the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /init/dataflow\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to initialize the db objects. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow.<br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Not authorized.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "201": { + "description": "Initialisation or repair successfully completed" + }, + "409": { + "description": "Conflict. There is an ongoing transaction targeting the DSD of the dataflow" + } + } + } + }, + "/2/init/allMappingsets": { + "post": { + "tags": [ + "DataManagement" + ], + "summary": "Create Mappingsets of all dataflows in the mappingstore database for a given dataspace", + "description": "Example: Create mappingsets for all dataflows found in the 'design' dataspace\r\n\r\n POST /init/allMappingsets\r\n {\r\n \"dataspace\": \"design\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to initialise the mappingsets. <br></br> Example: <code>design</code>" + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Send email options: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0 + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Successfully completed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Not authorized.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/2/import/excel": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit an import request of data or referential metadata from EDD + Excel files into provided dataspace", + "description": "Example: Advance validation import to the 'design' dataspace, using the eddFile 'importexample_EDD.xml' and the Excel file 'dataexample.xlsx'\r\n\r\n POST /import/excel\r\n {\r\n \"dataspace\": \"design\",\r\n \"eddFile\": \"importexample_EDD.xml\", \r\n \"excelFile\": \"dataexample.xlsx\",\r\n \"validationType\": 1\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "eddFile", + "excelFile" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "eddFile": { + "type": "string", + "description": "A XML edd file containing the description of the Excel file to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "excelFile": { + "type": "string", + "description": "An Excel file containing the data/referential metadata values to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + }, + "PITReleaseDate": { + "type": "string", + "description": "Optional - Point in time release date <br></br> Format (YYYY-MM-DDThh:mm:ss.sTZD) <br></br>Example: <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "restorationOptionRequired": { + "type": "boolean", + "description": "Optional - Indicate if the current LIVE version should be kept for restoration purposes when PIT release becomes active", + "nullable": true + }, + "validationType": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The type of validation to use during import: <br></br>Possible values: Import With <b>Basic Validation (0)</b>, Import With <b>Advanced Validation (1)</b>, Default (Import With Basic Validation)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "eddFile": { + "style": "form" + }, + "excelFile": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + }, + "PITReleaseDate": { + "style": "form" + }, + "restorationOptionRequired": { + "style": "form" + }, + "validationType": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Import task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/2/validate/excel": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit a validation of an import request of data or referential metadata from EDD + Excel files into provided dataspace", + "description": "Example: Validation of an import to the 'design' dataspace, using the eddFile 'importexample_EDD.xml' and the Excel file 'dataexample.xlsx'\r\n\r\n POST /validate/excel\r\n {\r\n \"dataspace\": \"design\",\r\n \"eddFile\": \"importexample_EDD.xml\", \r\n \"excelFile\": \"dataexample.xlsx\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "eddFile", + "excelFile" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "eddFile": { + "type": "string", + "description": "A XML edd file containing the description of the Excel file to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "excelFile": { + "type": "string", + "description": "An Excel file containing the data/referential metadata values to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "eddFile": { + "style": "form" + }, + "excelFile": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Validation task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/2/import/sdmxFile": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit an import request of data or referential metadata from SDMX file (xml|csv) into provided dataspace", + "description": "Example: Advanced validation import to the 'design' dataspace, using the CSV file 'dataexample.csv'\r\n\r\n POST /import/sdmxFile\r\n {\r\n \"dataspace\": \"design\",\r\n \"file\": \"dataexample.csv\",\r\n \"validationType\": 1\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "Obsolete - The artefact value is now directly read from the input file", + "nullable": true + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code used for the response message/email and the decimal separators used in CSV file.<br></br>Example: <code>en</code>", + "nullable": true + }, + "filepath": { + "type": "string", + "description": "Optional - The remote location (path/url) of the input file, containing the data or referential metadata to be imported. <br></br>Make sure that the remote file is accessible by the transfer-service", + "nullable": true + }, + "file": { + "type": "string", + "description": "Optional - When no filepath is given, The input SDMX data/referential metadata file to be imported/validated. <br></br>A maximum size file limit might apply", + "format": "binary", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + }, + "PITReleaseDate": { + "type": "string", + "description": "Optional - Point in time release date <br></br> Format (YYYY-MM-DDThh:mm:ss.sTZD) <br></br>Example: <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "restorationOptionRequired": { + "type": "boolean", + "description": "Optional - Indicate if the current LIVE version should be kept for restoration purposes when PIT release becomes active", + "nullable": true + }, + "validationType": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The type of validation to use during import: <br></br> Possible values: Import With <b>Basic Validation (0)</b>, Import With <b>Advanced Validation (1)</b>, Default (Import With Basic Validation)", + "format": "int32", + "nullable": true + }, + "authenticateToRemoteURL": { + "type": "boolean", + "description": "When using a remote URL that is a .Stat Suite data space using the same identity provider instance than this transfer service, set this parameter to true to authenticate you against that source data space.", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "filepath": { + "style": "form" + }, + "file": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + }, + "PITReleaseDate": { + "style": "form" + }, + "restorationOptionRequired": { + "style": "form" + }, + "validationType": { + "style": "form" + }, + "authenticateToRemoteURL": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Import task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/2/validate/sdmxFile": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit a validation of an import request of data or referential metadata from SDMX file (xml|csv) to a given dataspace", + "description": "Example: Make a validation request to the 'design' dataspace, using the CSV file 'dataexample.csv'\r\n\r\n POST /validate/sdmxFile\r\n {\r\n \"dataspace\": \"design\",\r\n \"file\": \"dataexample.csv\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "Obsolete - The artefact value is now directly read from the input file", + "nullable": true + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code used for the response message/email and the decimal separators used in CSV file.<br></br>Example: <code>en</code>", + "nullable": true + }, + "filepath": { + "type": "string", + "description": "Optional - The remote location (path/url) of the input file, containing the data or referential metadata to be imported. <br></br>Make sure that the remote file is accessible by the transfer-service", + "nullable": true + }, + "file": { + "type": "string", + "description": "Optional - When no filepath is given, The input SDMX data/referential metadata file to be imported/validated. <br></br>A maximum size file limit might apply", + "format": "binary", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "filepath": { + "style": "form" + }, + "file": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Import task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/2/pointintime/PITInfo": { + "post": { + "tags": [ + "PointInTime" + ], + "summary": "Get the Point-In-Time information of a dataflow for a given dataspace", + "description": "Example: Get the PIT information of the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /pointintime/PITInfo\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to consult the PIT information. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Information successfully retrieved", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/2/pointintime/rollback": { + "post": { + "tags": [ + "PointInTime" + ], + "summary": "Perform a Rollback of the Point-In-Time of a dataflow for a given dataspace", + "description": "Example: Perform a rollback of the PIT for the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /pointintime/rollback\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to perform the rollback. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Send email options: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0 + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Rollback successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/2/pointintime/restoration": { + "post": { + "tags": [ + "PointInTime" + ], + "summary": "Perform a Restoration of a released PIT version of a dataflow for a given dataspace", + "description": "Example: Restore the previous version of the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /pointintime/restoration\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to perform the restoration. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Send email options: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0 + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Restoration successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/2/status/request": { + "post": { + "tags": [ + "Status" + ], + "summary": "Get the transaction status information by transaction ID, for a given dataspace", + "description": "Example: Get the status of the request ID #4 in the 'design' dataspace\r\n\r\n POST /status/request\r\n {\r\n \"dataspace\": \"design\",\r\n \"id\": 4\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "id" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to search for the request. <br></br> Example: <code>design</code>" + }, + "id": { + "type": "integer", + "description": "The transaction ID, received during the submission of the request.<br></br> Example: <code>1</code>,<code>155</code>", + "format": "int32" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "id": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Information successfully retrieved", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not found" + } + } + } + }, + "/2/status/requests": { + "post": { + "tags": [ + "Status" + ], + "summary": "Search for transactions and their logs in a given dataspace", + "description": "Example: Get the status of the requests in the 'design' dataspace, for the user email 'email@domain.com' and completed with errors \r\n\r\n POST /status/requests\r\n {\r\n \"dataspace\": \"design\",\r\n \"userEmail\": \"email@domain.com\",\r\n \"executionOutcome\": 2\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to search for the requests. <br></br> Example: <code>design</code>" + }, + "userEmail": { + "type": "string", + "description": "Optional - Filter requests by user email, default (any). <br></br> Example: <code>email@domain.com</code>", + "nullable": true + }, + "artefact": { + "type": "string", + "description": "Optional - Filter requests by SDMX ID artefact, default (any). <br></br>Format: AGENCYID:ARTEFACTID(VERSION)<br></br> Example: <code>OECD:MEI(1.0)</code>, <code>OECD:DF_MEI(1.0)</code>", + "nullable": true + }, + "submissionStart": { + "type": "string", + "description": "Optional - Filter requests by the start Datetime when the import/transfer was requested<br></br> default (24Hrs before now) <br></br> Format: (dd-MM-yyyy HH:mm:ss or YYYY-MM-DDThh:mm:ssTZD)<br></br> Example: <code>04-06-2022 10:16:01</code>, <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "submissionEnd": { + "type": "string", + "description": "Optional - Filter requests by the end Datetime when the import/transfer finished processing<br></br> default (now)<br></br> Format: (dd-MM-yyyy HH:mm:ss or YYYY-MM-DDThh:mm:ssTZD)<br></br> Example: <code>04-06-2022 10:16:01</code>, <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "executionStatus": { + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Optional - Filter requests by its current Status <br></br>Possible values: Queued (0), InProgress (1), Completed (2), TimedOut (3), Canceled (4), default (any)", + "format": "int32", + "nullable": true + }, + "executionOutcome": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "Optional - Filter requests by its final outcome <br></br>Possible values: Success (0), Warning (1), Error (2), None (3), default (any)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "userEmail": { + "style": "form" + }, + "artefact": { + "style": "form" + }, + "submissionStart": { + "style": "form" + }, + "submissionEnd": { + "style": "form" + }, + "executionStatus": { + "style": "form" + }, + "executionOutcome": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Information successfully retrieved", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not found" + } + } + } + }, + "/2/transfer/dataflow": { + "post": { + "tags": [ + "Transfer" + ], + "summary": "Transfer data and/or referential metadata from one source dataspace to a destination dataspace.", + "description": "Example: transfer request\r\n\r\n POST /transfer/dataflow\r\n {\r\n \"sourceDataspace\": \"design\",\r\n \"sourceDataflow\": \"OECD:DF_MEI(1.0)\",\r\n \"destinationDataspace\": \"staging\",\r\n \"destinationDataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "destinationDataflow", + "destinationDataspace", + "sourceDataflow", + "sourceDataspace" + ], + "type": "object", + "properties": { + "sourceDataspace": { + "type": "string", + "description": "The ID of the source dataspace. <br></br> Example: <code>design</code>" + }, + "sourceDataflow": { + "type": "string", + "description": "The SDMX ID of the source dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sourceQuery": { + "type": "string", + "description": "Optional - SDMX query to filter the data/referential metadata to be transferred (as provided to the NSIWS to get data) <br></br> Example: <code>\"D.NOK.EUR.SP00.A?startPeriod=2012-01-01&endPeriod=2010-02-01\"</code>", + "nullable": true + }, + "destinationDataspace": { + "type": "string", + "description": "The ID of the destination dataspace. <br></br> Example: <code>staging</code>" + }, + "destinationDataflow": { + "type": "string", + "description": "The SDMX ID of the destination dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "sourceVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used from the <b>source</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used to the <b>destination</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "PITReleaseDate": { + "type": "string", + "description": "Optional - Point in time release date (YYYY-MM-DDThh:mm:ss.sTZD) Example: <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "validationType": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The type of validation to use during import: <br></br>Possible values: Import With <b>Basic Validation (0)</b>, Import With <b>Advanced Validation (1)</b>, Default (Import With Basic Validation)", + "format": "int32", + "nullable": true + }, + "transferContent": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - The content to be transferred across dataspaces: <br></br>Possible values: Transfer <b>both data and referential metadata (0)</b>, Transfer <b>data only (1)</b>, Transfer <b>referential metadata only (2)</b>, Default (Transfer both data and referential metadata)", + "format": "int32", + "default": 0, + "nullable": true + }, + "restorationOptionRequired": { + "type": "boolean", + "description": "Optional - Indicate if the current LIVE version should be kept for restoration purposes when PIT release becomes active", + "default": false, + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0, + "nullable": true + } + } + }, + "encoding": { + "sourceDataspace": { + "style": "form" + }, + "sourceDataflow": { + "style": "form" + }, + "sourceQuery": { + "style": "form" + }, + "destinationDataspace": { + "style": "form" + }, + "destinationDataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "sourceVersion": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "PITReleaseDate": { + "style": "form" + }, + "validationType": { + "style": "form" + }, + "transferContent": { + "style": "form" + }, + "restorationOptionRequired": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Transfer task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/2/validate/transferDataflow": { + "post": { + "tags": [ + "Transfer" + ], + "summary": "Validates a transfer of data and/or referential metadata from one source dataspace to a destination dataspace.", + "description": "Example: Validate a transfer request\r\n\r\n POST /validate/transferDataflow\r\n {\r\n \"sourceDataspace\": \"design\",\r\n \"sourceDataflow\": \"OECD:DF_MEI(1.0)\",\r\n \"destinationDataspace\": \"staging\",\r\n \"destinationDataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "destinationDataflow", + "destinationDataspace", + "sourceDataflow", + "sourceDataspace" + ], + "type": "object", + "properties": { + "sourceDataspace": { + "type": "string", + "description": "The ID of the source dataspace. <br></br> Example: <code>design</code>" + }, + "sourceDataflow": { + "type": "string", + "description": "The SDMX ID of the source dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sourceQuery": { + "type": "string", + "description": "Optional - SDMX query to filter the data/referential metadata to be validated (as provided to the NSIWS to get data) <br></br> Example: <code>\"D.NOK.EUR.SP00.A?startPeriod=2012-01-01&endPeriod=2010-02-01\"</code>", + "nullable": true + }, + "destinationDataspace": { + "type": "string", + "description": "The ID of the destination dataspace. <br></br> Example: <code>staging</code>" + }, + "destinationDataflow": { + "type": "string", + "description": "The SDMX ID of the destination dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "sourceVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used from the <b>source</b> dataspace. <br></br>Possible values: Live (0), PIT (1), Default(Live)", + "format": "int32", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used to the <b>destination</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "transferContent": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - The content to be validated across dataspaces: <br></br>Possible values: Transfer <b>both data and referential metadata (0)</b>, Transfer <b>data only (1)</b>, Transfer <b>referential metadata only (2)</b>, Default (Transfer both data and referential metadata)", + "format": "int32", + "default": 0, + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0, + "nullable": true + } + } + }, + "encoding": { + "sourceDataspace": { + "style": "form" + }, + "sourceDataflow": { + "style": "form" + }, + "sourceQuery": { + "style": "form" + }, + "destinationDataspace": { + "style": "form" + }, + "destinationDataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "sourceVersion": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "transferContent": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "The transfer validation task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/2/transfer/dsd": { + "post": { + "tags": [ + "Transfer" + ], + "summary": "Transfer DSD level referential metadata from one source dataspace to a destination dataspace.", + "description": "Example: transfer request\r\n\r\n POST /transfer/dsd\r\n {\r\n \"sourceDataspace\": \"design\",\r\n \"sourceDsd\": \"OECD:DSD_MEI(1.0)\",\r\n \"destinationDataspace\": \"staging\",\r\n \"destinationDsd\": \"OECD:DSD_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "destinationDataspace", + "destinationDsd", + "sourceDataspace", + "sourceDsd" + ], + "type": "object", + "properties": { + "sourceDataspace": { + "type": "string", + "description": "The ID of the source dataspace. <br></br> Example: <code>design</code>" + }, + "sourceDsd": { + "type": "string", + "description": "The SDMX ID of the source dsd. <br></br> Format: 'AGENCYID:DSD_ID(VERSION)'. <br></br> Example: <code>OECD:DSD_MEI(1.0)</code>" + }, + "destinationDataspace": { + "type": "string", + "description": "The ID of the destination dataspace. <br></br> Example: <code>staging</code>" + }, + "destinationDsd": { + "type": "string", + "description": "The SDMX ID of the destination dsd. <br></br> Format: 'AGENCYID:DSD_ID(VERSION)'. <br></br> Example: <code>OECD:DSD_MEI(1.0)</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "sourceVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used from the <b>source</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used to the <b>destination</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "PITReleaseDate": { + "type": "string", + "description": "Optional - Point in time release date (YYYY-MM-DDThh:mm:ss.sTZD) Example: <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "validationType": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The type of validation to use during import: <br></br>Possible values: Import With <b>Basic Validation (0)</b>, Import With <b>Advanced Validation (1)</b>, Default (Import With Basic Validation)", + "format": "int32", + "nullable": true + }, + "restorationOptionRequired": { + "type": "boolean", + "description": "Optional - Indicate if the current LIVE version should be kept for restoration purposes when PIT release becomes active", + "default": false, + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0, + "nullable": true + } + } + }, + "encoding": { + "sourceDataspace": { + "style": "form" + }, + "sourceDsd": { + "style": "form" + }, + "destinationDataspace": { + "style": "form" + }, + "destinationDsd": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "sourceVersion": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "PITReleaseDate": { + "style": "form" + }, + "validationType": { + "style": "form" + }, + "restorationOptionRequired": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Transfer task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/2/validate/transferDsd": { + "post": { + "tags": [ + "Transfer" + ], + "summary": "Validates a transfer of Dsd level referential metadata from one source dataspace to a destination dataspace.", + "description": "Example: Validate a transfer request\r\n\r\n POST /validate/transferDsd\r\n {\r\n \"sourceDataspace\": \"design\",\r\n \"sourceDsd\": \"OECD:DSD_MEI(1.0)\",\r\n \"destinationDataspace\": \"staging\",\r\n \"destinationDsd\": \"OECD:DSD_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "destinationDataspace", + "destinationDsd", + "sourceDataspace", + "sourceDsd" + ], + "type": "object", + "properties": { + "sourceDataspace": { + "type": "string", + "description": "The ID of the source dataspace. <br></br> Example: <code>design</code>" + }, + "sourceDsd": { + "type": "string", + "description": "The SDMX ID of the source DSD. <br></br> Format: 'AGENCYID:DSD_ID(VERSION)'. <br></br> Example: <code>OECD:DSD_MEI(1.0)</code>" + }, + "destinationDataspace": { + "type": "string", + "description": "The ID of the destination dataspace. <br></br> Example: <code>staging</code>" + }, + "destinationDsd": { + "type": "string", + "description": "The SDMX ID of the destination DSD. <br></br> Format: 'AGENCYID:DSD_ID(VERSION)'. <br></br> Example: <code>OECD:DSD_MEI(1.0)</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "sourceVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used from the <b>source</b> dataspace. <br></br>Possible values: Live (0), PIT (1), Default(Live)", + "format": "int32", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used to the <b>destination</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0, + "nullable": true + } + } + }, + "encoding": { + "sourceDataspace": { + "style": "form" + }, + "sourceDsd": { + "style": "form" + }, + "destinationDataspace": { + "style": "form" + }, + "destinationDsd": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "sourceVersion": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "The transfer validation task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "OperationResult": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "readOnly": true + }, + "message": { + "type": "string", + "nullable": true + }, + "detail": { + "nullable": true + } + }, + "additionalProperties": false + }, + "ProblemDetails": { + "type": "object", + "properties": { + "type": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "status": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "detail": { + "type": "string", + "nullable": true + }, + "instance": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": { } + } + }, + "securitySchemes": { + "oauth2": { + "type": "oauth2", + "flows": { + "authorizationCode": { + "authorizationUrl": "https://kc.daten.uba.de/realms/dctest/protocol/openid-connect/auth", + "tokenUrl": "https://kc.daten.uba.de/realms/dctest/protocol/openid-connect/token", + "scopes": { + "openid": "openid", + "profile": "profile", + "email": "email" + } + } + } + } + } + }, + "security": [ + { + "oauth2": [ + "openid", + "profile", + "email" + ] + } + ] + } \ No newline at end of file diff --git a/swagger/openapi-files/swagger-transfer-v3.json b/swagger/openapi-files/swagger-transfer-v3.json new file mode 100644 index 0000000..befdc28 --- /dev/null +++ b/swagger/openapi-files/swagger-transfer-v3.json @@ -0,0 +1,2507 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "Transfer service", + "description": "The .Stat Suite Core Transfer service provides a .Stat Core data storage API for: \n <ul>\n <li>Upload of SDMX data and/or referential metadata files (csv, xml) into a .Stat Core data storage.</li>\n <li>Upload of Excel data and/or referential metadata files (using a specific data mapping definition) into a .Stat Core data storage.</li>\n <li>Transfer of data and/or referential metadata between two .Stat Core data storages.</li>\n </ul>\n <br>See the <a href='https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-core-transfer/-/tree/master'>full API documentation</a> and the <a href='https://sis-cc.gitlab.io/dotstatsuite-documentation/using-api/'>functional specifications of the .Stat Suite APIs</a>.", + "license": { + "name": "MIT License", + "url": "https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-core-transfer/-/blob/master/LICENSE" + }, + "version": "3" + }, + "servers": [ + { + "description": "UBA Data Cube ", + "url": "https://daten.uba.de/transfer" + } + ], + "paths": { + "/3/cleanup/orphans": { + "delete": { + "tags": [ + "CleanUp" + ], + "summary": "Delete all Data DB entries of orphan DSDs and its linked MSDs in the data database for a given dataspace", + "description": "Example: Delete all orphan DSDs and its linked MSDs in the dataspace 'design'\r\n\r\n DELETE /cleanup/orphans\r\n {\r\n \"dataspace\": \"design\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where the orphan DSDs should be removed. <br></br> Example: <code>design</code>" + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Send email options: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0 + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Cleanup succeeded", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict. There is an ongoing transaction for a DSD" + }, + "207": { + "description": "Multi-Status, containing http status codes 200 and 409" + } + } + } + }, + "/3/cleanup/dsd": { + "delete": { + "tags": [ + "CleanUp" + ], + "summary": "Delete a given DSD and all its child artefacts or only its linked MSD, from the data database, and for a given dataspace", + "description": "Example: Delete the DSD 'OECD:MEI(1.0)' and all its child artefacts from the 'design' dataspace\r\n\r\n DELETE /cleanup/dsd\r\n {\r\n \"dataspace\": \"design\",\r\n \"dsd\": \"OECD:MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "dsd" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where the DSD should be cleaned. <br></br> Example: <code>design</code>" + }, + "dsd": { + "type": "string", + "description": "The SDMX ID of the DSD to be deleted <br></br> Format: 'AGENCYID:DSD ID(VERSION)' <br></br> Example: <code>OECD:MEI(1.0)</code>" + }, + "cleanupMsdOnly": { + "type": "boolean", + "description": "Optional - Indicate if <b>only</b> the linked MSD should be cleaned. By default, it is set to false.", + "default": false, + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dsd": { + "style": "form" + }, + "cleanupMsdOnly": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Cleanup succeeded", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict. There is an ongoing transaction targeting the DSD" + } + } + } + }, + "/3/cleanup/mappingsets": { + "delete": { + "tags": [ + "CleanUp" + ], + "summary": "Delete all mappingsets and datasets stored in the Mapping Store DB for a given dataflow and a given dataspace", + "description": "Example: Delete the mappingsets of the dataflow 'OECD:DF_MEI(1.0)' in the 'design' dataspace\r\n\r\n DELETE /cleanup/mappingsets\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where the mappingsets should be cleaned. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow for which the mappingsets should be deleted <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)' <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Cleanup succeeded", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict. There is an ongoing transaction targeting the DSD" + } + } + } + }, + "/3/init/dataflow": { + "post": { + "tags": [ + "DataManagement" + ], + "summary": "Initialise or repair DB objects of a dataflow in a given datastore DB (creates all Data DB objects - or repair missing/broken structures - required for the dataflow usage for extractions, and generates an empty actual content constraint for the dataflow)", + "description": "Example: Initialise the database objects of the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /init/dataflow\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to initialize the db objects. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow.<br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Not authorized.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "201": { + "description": "Initialisation or repair successfully completed" + }, + "409": { + "description": "Conflict. There is an ongoing transaction targeting the DSD of the dataflow" + } + } + } + }, + "/3/init/allMappingsets": { + "post": { + "tags": [ + "DataManagement" + ], + "summary": "Create Mappingsets of all dataflows in the mappingstore database for a given dataspace", + "description": "Example: Create mappingsets for all dataflows found in the 'design' dataspace\r\n\r\n POST /init/allMappingsets\r\n {\r\n \"dataspace\": \"design\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to initialise the mappingsets. <br></br> Example: <code>design</code>" + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Send email options: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0 + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Successfully completed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Not authorized.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/3/tune/dsd": { + "post": { + "tags": [ + "DataManagement" + ], + "summary": "Apply a specific type of index to tune the performance of the DSD tables storing the data and referential metadata for a given dataspace", + "description": "Example: Tune the DSD 'OECD:MEI(1.0)' with index type 'CLUSTERED_COLUMNSTORE' in the 'design' dataspace\r\n\r\n POST /tune/dsd\r\n {\r\n \"dataspace\": \"design\",\r\n \"dsd\": \"OECD:MEI(1.0)\",\r\n \"indexType\": 2\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "dsd", + "indexType" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to tune the DSD. <br></br> Example: <code>design</code>" + }, + "dsd": { + "type": "string", + "description": "The SDMX ID of the DSD to be tuned <br></br> Format: 'AGENCYID:DSD ID(VERSION)' <br></br> Example: <code>OECD:MEI(1.0)</code>" + }, + "indexType": { + "enum": [ + 2, + 3 + ], + "type": "integer", + "description": "The type of index to be applied to the DSD: <br></br> indexType Options <br></br><b> - CLUSTERED_COLUMNSTORE (2)</b> - Improves performance for data extractions for DSDs with millions of observations.<br></br><b>- CLUSTERED_COLUMNSTORE_ARCHIVE (3)</b> - High compression of data to save disk space; Makes data imports and exports slower.", + "format": "int32" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dsd": { + "style": "form" + }, + "indexType": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Successfully completed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Not authorized.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not found." + } + } + } + }, + "/3/tune/info": { + "post": { + "tags": [ + "DataManagement" + ], + "summary": "Get the indexType information currently applied for the DSD tables storing the data and referential metadata for a given dataspace", + "description": "Example: Get the index type information for the DSD 'OECD:MEI(1.0)', found in the 'design' dataspace\r\n\r\n POST /tune/info\r\n {\r\n \"dataspace\": \"design\",\r\n \"dsd\": \"OECD:MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "dsd" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to tune the DSD. <br></br> Example: <code>design</code>" + }, + "dsd": { + "type": "string", + "description": "The SDMX ID of the DSD to be tuned <br></br> Format: 'AGENCYID:DSD ID(VERSION)' <br></br> Example: <code>OECD:MEI(1.0)</code>" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dsd": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Successfully completed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Not authorized.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not found." + } + } + } + }, + "/3/import/excel": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit an import request of data or referential metadata from EDD + Excel files into provided dataspace", + "description": "Example: Advance validation import to the 'design' dataspace, using the eddFile 'importexample_EDD.xml' and the Excel file 'dataexample.xlsx'\r\n\r\n POST /import/excel\r\n {\r\n \"dataspace\": \"design\",\r\n \"eddFile\": \"importexample_EDD.xml\", \r\n \"excelFile\": \"dataexample.xlsx\",\r\n \"validationType\": 1\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "eddFile", + "excelFile" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "eddFile": { + "type": "string", + "description": "A XML edd file containing the description of the Excel file to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "excelFile": { + "type": "string", + "description": "An Excel file containing the data/referential metadata values to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + }, + "PITReleaseDate": { + "type": "string", + "description": "Optional - Point in time release date <br></br> Format (YYYY-MM-DDThh:mm:ss.sTZD) <br></br>Example: <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "restorationOptionRequired": { + "type": "boolean", + "description": "Optional - Indicate if the current LIVE version should be kept for restoration purposes when PIT release becomes active", + "nullable": true + }, + "validationType": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The type of validation to use during import: <br></br>Possible values: Import With <b>Basic Validation (0)</b>, Import With <b>Advanced Validation (1)</b>, Default (Import With Basic Validation)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "eddFile": { + "style": "form" + }, + "excelFile": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + }, + "PITReleaseDate": { + "style": "form" + }, + "restorationOptionRequired": { + "style": "form" + }, + "validationType": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Import task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/3/validate/excel": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit a validation of an import request of data or referential metadata from EDD + Excel files into provided dataspace", + "description": "Example: Validation of an import to the 'design' dataspace, using the eddFile 'importexample_EDD.xml' and the Excel file 'dataexample.xlsx'\r\n\r\n POST /validate/excel\r\n {\r\n \"dataspace\": \"design\",\r\n \"eddFile\": \"importexample_EDD.xml\", \r\n \"excelFile\": \"dataexample.xlsx\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "eddFile", + "excelFile" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "eddFile": { + "type": "string", + "description": "A XML edd file containing the description of the Excel file to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "excelFile": { + "type": "string", + "description": "An Excel file containing the data/referential metadata values to be imported. <br></br>A maximum size file limit might apply", + "format": "binary" + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "eddFile": { + "style": "form" + }, + "excelFile": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Validation task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/3/import/sdmxFile": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit an import request of data or referential metadata from SDMX file (xml|csv) into provided dataspace", + "description": "Example: Advanced validation import to the 'design' dataspace, using the CSV file 'dataexample.csv'\r\n\r\n POST /import/sdmxFile\r\n {\r\n \"dataspace\": \"design\",\r\n \"file\": \"dataexample.csv\",\r\n \"validationType\": 1\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "Obsolete - The artefact value is now directly read from the input file", + "nullable": true + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code used for the response message/email and the decimal separators used in CSV file.<br></br>Example: <code>en</code>", + "nullable": true + }, + "filepath": { + "type": "string", + "description": "Optional - The remote location (path/url) of the input file, containing the data or referential metadata to be imported. <br></br>Make sure that the remote file is accessible by the transfer-service", + "nullable": true + }, + "file": { + "type": "string", + "description": "Optional - When no filepath is given, The input SDMX data/referential metadata file to be imported/validated. <br></br>A maximum size file limit might apply", + "format": "binary", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + }, + "PITReleaseDate": { + "type": "string", + "description": "Optional - Point in time release date <br></br> Format (YYYY-MM-DDThh:mm:ss.sTZD) <br></br>Example: <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "restorationOptionRequired": { + "type": "boolean", + "description": "Optional - Indicate if the current LIVE version should be kept for restoration purposes when PIT release becomes active", + "nullable": true + }, + "validationType": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The type of validation to use during import: <br></br> Possible values: Import With <b>Basic Validation (0)</b>, Import With <b>Advanced Validation (1)</b>, Default (Import With Basic Validation)", + "format": "int32", + "nullable": true + }, + "authenticateToRemoteURL": { + "type": "boolean", + "description": "When using a remote URL that is a .Stat Suite data space using the same identity provider instance than this transfer service, set this parameter to true to authenticate you against that source data space.", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "filepath": { + "style": "form" + }, + "file": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + }, + "PITReleaseDate": { + "style": "form" + }, + "restorationOptionRequired": { + "style": "form" + }, + "validationType": { + "style": "form" + }, + "authenticateToRemoteURL": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Import task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/3/validate/sdmxFile": { + "post": { + "tags": [ + "Import" + ], + "summary": "Submit a validation of an import request of data or referential metadata from SDMX file (xml|csv) to a given dataspace", + "description": "Example: Make a validation request to the 'design' dataspace, using the CSV file 'dataexample.csv'\r\n\r\n POST /validate/sdmxFile\r\n {\r\n \"dataspace\": \"design\",\r\n \"file\": \"dataexample.csv\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to where the values will be stored/validated. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "Obsolete - The artefact value is now directly read from the input file", + "nullable": true + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code used for the response message/email and the decimal separators used in CSV file.<br></br>Example: <code>en</code>", + "nullable": true + }, + "filepath": { + "type": "string", + "description": "Optional - The remote location (path/url) of the input file, containing the data or referential metadata to be imported. <br></br>Make sure that the remote file is accessible by the transfer-service", + "nullable": true + }, + "file": { + "type": "string", + "description": "Optional - When no filepath is given, The input SDMX data/referential metadata file to be imported/validated. <br></br>A maximum size file limit might apply", + "format": "binary", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The target version of the data and referential metadata to be used during the import/validation. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "filepath": { + "style": "form" + }, + "file": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Import task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/3/pointintime/PITInfo": { + "post": { + "tags": [ + "PointInTime" + ], + "summary": "Get the Point-In-Time information of a dataflow for a given dataspace", + "description": "Example: Get the PIT information of the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /pointintime/PITInfo\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to consult the PIT information. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Information successfully retrieved", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/3/pointintime/rollback": { + "post": { + "tags": [ + "PointInTime" + ], + "summary": "Perform a Rollback of the Point-In-Time of a dataflow for a given dataspace", + "description": "Example: Perform a rollback of the PIT for the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /pointintime/rollback\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to perform the rollback. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Send email options: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0 + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Rollback successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/3/pointintime/restoration": { + "post": { + "tags": [ + "PointInTime" + ], + "summary": "Perform a Restoration of a released PIT version of a dataflow for a given dataspace", + "description": "Example: Restore the previous version of the dataflow 'OECD:MEI(1.0)' in the 'design' dataspace\r\n\r\n POST /pointintime/restoration\r\n {\r\n \"dataspace\": \"design\",\r\n \"dataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataflow", + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace where to perform the restoration. <br></br> Example: <code>design</code>" + }, + "dataflow": { + "type": "string", + "description": "The SDMX ID of the dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Send email options: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0 + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "dataflow": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Restoration successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/3/status/request": { + "post": { + "tags": [ + "Status" + ], + "summary": "Get the transaction status information by transaction ID, for a given dataspace", + "description": "Example: Get the status of the request ID #4 in the 'design' dataspace\r\n\r\n POST /status/request\r\n {\r\n \"dataspace\": \"design\",\r\n \"id\": 4\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace", + "id" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to search for the request. <br></br> Example: <code>design</code>" + }, + "id": { + "type": "integer", + "description": "The transaction ID, received during the submission of the request.<br></br> Example: <code>1</code>,<code>155</code>", + "format": "int32" + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "id": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Information successfully retrieved", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not found" + } + } + } + }, + "/3/status/requests": { + "post": { + "tags": [ + "Status" + ], + "summary": "Search for transactions and their logs in a given dataspace", + "description": "Example: Get the status of the requests in the 'design' dataspace, for the user email 'email@domain.com' and completed with errors \r\n\r\n POST /status/requests\r\n {\r\n \"dataspace\": \"design\",\r\n \"userEmail\": \"email@domain.com\",\r\n \"executionOutcome\": 2\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "dataspace" + ], + "type": "object", + "properties": { + "dataspace": { + "type": "string", + "description": "The ID of the dataspace to search for the requests. <br></br> Example: <code>design</code>" + }, + "userEmail": { + "type": "string", + "description": "Optional - Filter requests by user email, default (any). <br></br> Example: <code>email@domain.com</code>", + "nullable": true + }, + "artefact": { + "type": "string", + "description": "Optional - Filter requests by SDMX ID artefact, default (any). <br></br>Format: AGENCYID:ARTEFACTID(VERSION)<br></br> Example: <code>OECD:MEI(1.0)</code>, <code>OECD:DF_MEI(1.0)</code>", + "nullable": true + }, + "submissionStart": { + "type": "string", + "description": "Optional - Filter requests by the start Datetime when the import/transfer was requested<br></br> default (24Hrs before now) <br></br> Format: (dd-MM-yyyy HH:mm:ss or YYYY-MM-DDThh:mm:ssTZD)<br></br> Example: <code>04-06-2022 10:16:01</code>, <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "submissionEnd": { + "type": "string", + "description": "Optional - Filter requests by the end Datetime when the import/transfer finished processing<br></br> default (now)<br></br> Format: (dd-MM-yyyy HH:mm:ss or YYYY-MM-DDThh:mm:ssTZD)<br></br> Example: <code>04-06-2022 10:16:01</code>, <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "executionStatus": { + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Optional - Filter requests by its current Status <br></br>Possible values: Queued (0), InProgress (1), Completed (2), TimedOut (3), Canceled (4), default (any)", + "format": "int32", + "nullable": true + }, + "executionOutcome": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "Optional - Filter requests by its final outcome <br></br>Possible values: Success (0), Warning (1), Error (2), None (3), default (any)", + "format": "int32", + "nullable": true + } + } + }, + "encoding": { + "dataspace": { + "style": "form" + }, + "userEmail": { + "style": "form" + }, + "artefact": { + "style": "form" + }, + "submissionStart": { + "style": "form" + }, + "submissionEnd": { + "style": "form" + }, + "executionStatus": { + "style": "form" + }, + "executionOutcome": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Information successfully retrieved", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not found" + } + } + } + }, + "/3/transfer/dataflow": { + "post": { + "tags": [ + "Transfer" + ], + "summary": "Transfer data and/or referential metadata from one source dataspace to a destination dataspace.", + "description": "Example: transfer request\r\n\r\n POST /transfer/dataflow\r\n {\r\n \"sourceDataspace\": \"design\",\r\n \"sourceDataflow\": \"OECD:DF_MEI(1.0)\",\r\n \"destinationDataspace\": \"staging\",\r\n \"destinationDataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "destinationDataflow", + "destinationDataspace", + "sourceDataflow", + "sourceDataspace" + ], + "type": "object", + "properties": { + "sourceDataspace": { + "type": "string", + "description": "The ID of the source dataspace. <br></br> Example: <code>design</code>" + }, + "sourceDataflow": { + "type": "string", + "description": "The SDMX ID of the source dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sourceQuery": { + "type": "string", + "description": "Optional - SDMX query to filter the data/referential metadata to be transferred (as provided to the NSIWS to get data) <br></br> Example: <code>\"D.NOK.EUR.SP00.A?startPeriod=2012-01-01&endPeriod=2010-02-01\"</code>", + "nullable": true + }, + "destinationDataspace": { + "type": "string", + "description": "The ID of the destination dataspace. <br></br> Example: <code>staging</code>" + }, + "destinationDataflow": { + "type": "string", + "description": "The SDMX ID of the destination dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "sourceVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used from the <b>source</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used to the <b>destination</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "PITReleaseDate": { + "type": "string", + "description": "Optional - Point in time release date (YYYY-MM-DDThh:mm:ss.sTZD) Example: <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "validationType": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The type of validation to use during import: <br></br>Possible values: Import With <b>Basic Validation (0)</b>, Import With <b>Advanced Validation (1)</b>, Default (Import With Basic Validation)", + "format": "int32", + "nullable": true + }, + "transferContent": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - The content to be transferred across dataspaces: <br></br>Possible values: Transfer <b>both data and referential metadata (0)</b>, Transfer <b>data only (1)</b>, Transfer <b>referential metadata only (2)</b>, Default (Transfer both data and referential metadata)", + "format": "int32", + "default": 0, + "nullable": true + }, + "restorationOptionRequired": { + "type": "boolean", + "description": "Optional - Indicate if the current LIVE version should be kept for restoration purposes when PIT release becomes active", + "default": false, + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0, + "nullable": true + } + } + }, + "encoding": { + "sourceDataspace": { + "style": "form" + }, + "sourceDataflow": { + "style": "form" + }, + "sourceQuery": { + "style": "form" + }, + "destinationDataspace": { + "style": "form" + }, + "destinationDataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "sourceVersion": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "PITReleaseDate": { + "style": "form" + }, + "validationType": { + "style": "form" + }, + "transferContent": { + "style": "form" + }, + "restorationOptionRequired": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Transfer task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/3/validate/transferDataflow": { + "post": { + "tags": [ + "Transfer" + ], + "summary": "Validates a transfer of data and/or referential metadata from one source dataspace to a destination dataspace.", + "description": "Example: Validate a transfer request\r\n\r\n POST /validate/transferDataflow\r\n {\r\n \"sourceDataspace\": \"design\",\r\n \"sourceDataflow\": \"OECD:DF_MEI(1.0)\",\r\n \"destinationDataspace\": \"staging\",\r\n \"destinationDataflow\": \"OECD:DF_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "destinationDataflow", + "destinationDataspace", + "sourceDataflow", + "sourceDataspace" + ], + "type": "object", + "properties": { + "sourceDataspace": { + "type": "string", + "description": "The ID of the source dataspace. <br></br> Example: <code>design</code>" + }, + "sourceDataflow": { + "type": "string", + "description": "The SDMX ID of the source dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "sourceQuery": { + "type": "string", + "description": "Optional - SDMX query to filter the data/referential metadata to be validated (as provided to the NSIWS to get data) <br></br> Example: <code>\"D.NOK.EUR.SP00.A?startPeriod=2012-01-01&endPeriod=2010-02-01\"</code>", + "nullable": true + }, + "destinationDataspace": { + "type": "string", + "description": "The ID of the destination dataspace. <br></br> Example: <code>staging</code>" + }, + "destinationDataflow": { + "type": "string", + "description": "The SDMX ID of the destination dataflow. <br></br> Format: 'AGENCYID:DATAFLOWID(VERSION)'. <br></br> Example: <code>OECD:DF_MEI(1.0)</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "sourceVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used from the <b>source</b> dataspace. <br></br>Possible values: Live (0), PIT (1), Default(Live)", + "format": "int32", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used to the <b>destination</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "transferContent": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - The content to be validated across dataspaces: <br></br>Possible values: Transfer <b>both data and referential metadata (0)</b>, Transfer <b>data only (1)</b>, Transfer <b>referential metadata only (2)</b>, Default (Transfer both data and referential metadata)", + "format": "int32", + "default": 0, + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0, + "nullable": true + } + } + }, + "encoding": { + "sourceDataspace": { + "style": "form" + }, + "sourceDataflow": { + "style": "form" + }, + "sourceQuery": { + "style": "form" + }, + "destinationDataspace": { + "style": "form" + }, + "destinationDataflow": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "sourceVersion": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "transferContent": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "The transfer validation task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/3/transfer/dsd": { + "post": { + "tags": [ + "Transfer" + ], + "summary": "Transfer DSD level referential metadata from one source dataspace to a destination dataspace.", + "description": "Example: transfer request\r\n\r\n POST /transfer/dsd\r\n {\r\n \"sourceDataspace\": \"design\",\r\n \"sourceDsd\": \"OECD:DSD_MEI(1.0)\",\r\n \"destinationDataspace\": \"staging\",\r\n \"destinationDsd\": \"OECD:DSD_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "destinationDataspace", + "destinationDsd", + "sourceDataspace", + "sourceDsd" + ], + "type": "object", + "properties": { + "sourceDataspace": { + "type": "string", + "description": "The ID of the source dataspace. <br></br> Example: <code>design</code>" + }, + "sourceDsd": { + "type": "string", + "description": "The SDMX ID of the source dsd. <br></br> Format: 'AGENCYID:DSD_ID(VERSION)'. <br></br> Example: <code>OECD:DSD_MEI(1.0)</code>" + }, + "destinationDataspace": { + "type": "string", + "description": "The ID of the destination dataspace. <br></br> Example: <code>staging</code>" + }, + "destinationDsd": { + "type": "string", + "description": "The SDMX ID of the destination dsd. <br></br> Format: 'AGENCYID:DSD_ID(VERSION)'. <br></br> Example: <code>OECD:DSD_MEI(1.0)</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "sourceVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used from the <b>source</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used to the <b>destination</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "PITReleaseDate": { + "type": "string", + "description": "Optional - Point in time release date (YYYY-MM-DDThh:mm:ss.sTZD) Example: <code>2022-06-04T10:16:01</code>, <code>2022-06-04T08:16:01Z</code>, <code>2022-06-04T10:16:01+02:00</code>, <code>2022-06-04T10:16:01.021+02:00</code>", + "nullable": true + }, + "validationType": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The type of validation to use during import: <br></br>Possible values: Import With <b>Basic Validation (0)</b>, Import With <b>Advanced Validation (1)</b>, Default (Import With Basic Validation)", + "format": "int32", + "nullable": true + }, + "restorationOptionRequired": { + "type": "boolean", + "description": "Optional - Indicate if the current LIVE version should be kept for restoration purposes when PIT release becomes active", + "default": false, + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0, + "nullable": true + } + } + }, + "encoding": { + "sourceDataspace": { + "style": "form" + }, + "sourceDsd": { + "style": "form" + }, + "destinationDataspace": { + "style": "form" + }, + "destinationDsd": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "sourceVersion": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "PITReleaseDate": { + "style": "form" + }, + "validationType": { + "style": "form" + }, + "restorationOptionRequired": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Transfer task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/3/validate/transferDsd": { + "post": { + "tags": [ + "Transfer" + ], + "summary": "Validates a transfer of Dsd level referential metadata from one source dataspace to a destination dataspace.", + "description": "Example: Validate a transfer request\r\n\r\n POST /validate/transferDsd\r\n {\r\n \"sourceDataspace\": \"design\",\r\n \"sourceDsd\": \"OECD:DSD_MEI(1.0)\",\r\n \"destinationDataspace\": \"staging\",\r\n \"destinationDsd\": \"OECD:DSD_MEI(1.0)\"\r\n }", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "destinationDataspace", + "destinationDsd", + "sourceDataspace", + "sourceDsd" + ], + "type": "object", + "properties": { + "sourceDataspace": { + "type": "string", + "description": "The ID of the source dataspace. <br></br> Example: <code>design</code>" + }, + "sourceDsd": { + "type": "string", + "description": "The SDMX ID of the source DSD. <br></br> Format: 'AGENCYID:DSD_ID(VERSION)'. <br></br> Example: <code>OECD:DSD_MEI(1.0)</code>" + }, + "destinationDataspace": { + "type": "string", + "description": "The ID of the destination dataspace. <br></br> Example: <code>staging</code>" + }, + "destinationDsd": { + "type": "string", + "description": "The SDMX ID of the destination DSD. <br></br> Format: 'AGENCYID:DSD_ID(VERSION)'. <br></br> Example: <code>OECD:DSD_MEI(1.0)</code>" + }, + "lang": { + "type": "string", + "description": "Optional - Two letter (ISO Alpha-2) language code to produce the response message/email<br></br>Example: <code>en</code>", + "nullable": true + }, + "sourceVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used from the <b>source</b> dataspace. <br></br>Possible values: Live (0), PIT (1), Default(Live)", + "format": "int32", + "nullable": true + }, + "targetVersion": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Optional - The version of the data and referential metadata to be used to the <b>destination</b> dataspace. <br></br>Possible values: Live (0), Point in Time PIT (1), Default (Live)", + "format": "int32", + "nullable": true + }, + "sendEmail": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "Optional - Indicate when the service should send email. <br></br>Possible values: Always (0), Never (1), IfError (2), default (Always)", + "format": "int32", + "default": 0, + "nullable": true + } + } + }, + "encoding": { + "sourceDataspace": { + "style": "form" + }, + "sourceDsd": { + "style": "form" + }, + "destinationDataspace": { + "style": "form" + }, + "destinationDsd": { + "style": "form" + }, + "lang": { + "style": "form" + }, + "sourceVersion": { + "style": "form" + }, + "targetVersion": { + "style": "form" + }, + "sendEmail": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "The transfer validation task successfully submitted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "400": { + "description": "Data database version is incompatible, Validation or Internal error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationResult" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "OperationResult": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "readOnly": true + }, + "message": { + "type": "string", + "nullable": true + }, + "detail": { + "nullable": true + } + }, + "additionalProperties": false + }, + "ProblemDetails": { + "type": "object", + "properties": { + "type": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "status": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "detail": { + "type": "string", + "nullable": true + }, + "instance": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": { } + } + }, + "securitySchemes": { + "oauth2": { + "type": "oauth2", + "flows": { + "authorizationCode": { + "authorizationUrl": "https://kc.daten.uba.de/realms/dctest/protocol/openid-connect/auth", + "tokenUrl": "https://kc.daten.uba.de/realms/dctest/protocol/openid-connect/token", + "scopes": { + "openid": "openid", + "profile": "profile", + "email": "email" + } + } + } + } + } + }, + "security": [ + { + "oauth2": [ + "openid", + "profile", + "email" + ] + } + ] + } \ No newline at end of file diff --git a/swagger/ui/custom.css b/swagger/ui/custom.css index 2b9197d..76f767c 100644 --- a/swagger/ui/custom.css +++ b/swagger/ui/custom.css @@ -1,4 +1,21 @@ -.swagger-ui .topbar { +html { + box-sizing: border-box; + overflow: -moz-scrollbars-vertical; + overflow-y: scroll; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +body { + margin: 0; + background: #fafafa; +} + +.swagger-ui .topbar { padding: 0 0 0 0; background: #f1f1f1; } @@ -8,7 +25,7 @@ max-width: none; } -.topbar-wrapper img { +.topbar-wrapper a { content: url(../../images/logo.svg); float: left; width: 358px; -- GitLab From e36dcf39a85147b49639b5837116a2433afe70f4 Mon Sep 17 00:00:00 2001 From: David Rauh <david.rauh@uba.de> Date: Tue, 18 Jun 2024 07:25:32 +0000 Subject: [PATCH 3/9] add ci job --- .gitlab-ci.yml | 6 ++++++ ...Dockerfile-swagger => Dockerfile-swagger-ui} | 8 +++++--- swagger/images/logo.png | Bin 96385 -> 0 bytes swagger/ui/{custom.css => index.css} | 0 4 files changed, 11 insertions(+), 3 deletions(-) rename docker/{Dockerfile-swagger => Dockerfile-swagger-ui} (74%) delete mode 100644 swagger/images/logo.png rename swagger/ui/{custom.css => index.css} (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d0f1cba..d6e1001 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,6 +23,12 @@ build_keycloak_image: - cp $DC_REALM_FILE $CI_PROJECT_DIR/dc-realm.json - /kaniko/executor --context $CI_PROJECT_DIR --build-arg KEYCLOAK_VERSION=${KEYCLOAK_VERSION} --dockerfile "$CI_PROJECT_DIR/docker/Dockerfile-keycloak" --destination "$CI_REGISTRY_IMAGE/keycloak:$KEYCLOAK_VERSION" +build_mongodb_image: + extends: .build_image + script: + - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile "$CI_PROJECT_DIR/docker/Dockerfile-swagger-ui" --destination "$CI_REGISTRY_IMAGE/swagger-ui:7" + + build_mongodb_image: extends: .build_image script: diff --git a/docker/Dockerfile-swagger b/docker/Dockerfile-swagger-ui similarity index 74% rename from docker/Dockerfile-swagger rename to docker/Dockerfile-swagger-ui index 786e7ad..a3a009a 100644 --- a/docker/Dockerfile-swagger +++ b/docker/Dockerfile-swagger-ui @@ -1,9 +1,11 @@ FROM swaggerapi/swagger-ui:v5.17.14 +WORKDIR /usr/share/nginx/html + +COPY swagger/openapi-files openapi +COPY swagger/ui/index.css index.css +COPY swagger/images images -COPY swagger/openapi-files /usr/share/nginx/html/openapi -COPY swagger/ui/custom.css /usr/share/nginx/html/index.css -COPY swagger/images /usr/share/nginx/html/images ENV URLS="[{url: \"./openapi/swagger-nsiws-v2.json\", name: \"NSIWS-v2\"},\ {url: \"./openapi/swagger-nsiws-v1.json\", name: \"NSIWS-v1\"},\ {url: \"./openapi/swagger-transfer-v3.json\", name: \"TRANSFER-v3\"},\ diff --git a/swagger/images/logo.png b/swagger/images/logo.png deleted file mode 100644 index 334572a566d9bcf4df774a02891c02391946f3c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96385 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%0DT2)!G9Y;<LYJ}D2f2p0DfxG2*w0OOzHZO+SBe! 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%0Dh?f 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 diff --git a/swagger/ui/custom.css b/swagger/ui/index.css similarity index 100% rename from swagger/ui/custom.css rename to swagger/ui/index.css -- GitLab From deb7697ae85cbd8331e71a3d8059bfb72766f26a Mon Sep 17 00:00:00 2001 From: David Rauh <david.rauh@uba.de> Date: Tue, 18 Jun 2024 07:37:24 +0000 Subject: [PATCH 4/9] remove swagger ui specific files from nsi-ws image --- docker/Dockerfile-nsi-ws | 2 -- 1 file changed, 2 deletions(-) diff --git a/docker/Dockerfile-nsi-ws b/docker/Dockerfile-nsi-ws index bb207d2..0713e9e 100644 --- a/docker/Dockerfile-nsi-ws +++ b/docker/Dockerfile-nsi-ws @@ -3,8 +3,6 @@ FROM siscc/sdmxri-nsi-maapi:${NSI_IMAGE_TAG} COPY log4net.config /app/config/log4net.config COPY scripts/dotnet-log-filter.sh /app/log-filter.sh -COPY swagger/ui/custom.css /app/wwwroot/swagger/ui/ -COPY images/* /app/wwwroot/images/ ENV auth__allowAnonymous="true" ENV auth__requireHttps="false" -- GitLab From b5363021665cdf23423fb896f9c5fc2cc28a00fe Mon Sep 17 00:00:00 2001 From: David Rauh <david.rauh@uba.de> Date: Tue, 18 Jun 2024 07:39:21 +0000 Subject: [PATCH 5/9] remove version from swagger-ui tag --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d6e1001..1148db4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,7 +26,7 @@ build_keycloak_image: build_mongodb_image: extends: .build_image script: - - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile "$CI_PROJECT_DIR/docker/Dockerfile-swagger-ui" --destination "$CI_REGISTRY_IMAGE/swagger-ui:7" + - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile "$CI_PROJECT_DIR/docker/Dockerfile-swagger-ui" --destination "$CI_REGISTRY_IMAGE/swagger-ui" build_mongodb_image: -- GitLab From cef06b55448653d6382b1f44f4058def0f8c10e3 Mon Sep 17 00:00:00 2001 From: David Rauh <david.rauh@uba.de> Date: Tue, 18 Jun 2024 08:05:23 +0000 Subject: [PATCH 6/9] fix build job name --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1148db4..c66c13e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,7 +23,7 @@ build_keycloak_image: - cp $DC_REALM_FILE $CI_PROJECT_DIR/dc-realm.json - /kaniko/executor --context $CI_PROJECT_DIR --build-arg KEYCLOAK_VERSION=${KEYCLOAK_VERSION} --dockerfile "$CI_PROJECT_DIR/docker/Dockerfile-keycloak" --destination "$CI_REGISTRY_IMAGE/keycloak:$KEYCLOAK_VERSION" -build_mongodb_image: +build_swagger_ui_image: extends: .build_image script: - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile "$CI_PROJECT_DIR/docker/Dockerfile-swagger-ui" --destination "$CI_REGISTRY_IMAGE/swagger-ui" -- GitLab From 9ac9205a37c3e2373eefb0ffc9a2f5579a8c87ad Mon Sep 17 00:00:00 2001 From: David Rauh <david.rauh@uba.de> Date: Tue, 18 Jun 2024 08:18:08 +0000 Subject: [PATCH 7/9] remove trailing spaces --- swagger/ui/index.css | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/swagger/ui/index.css b/swagger/ui/index.css index 76f767c..458fec3 100644 --- a/swagger/ui/index.css +++ b/swagger/ui/index.css @@ -17,25 +17,25 @@ body { .swagger-ui .topbar { padding: 0 0 0 0; - background: #f1f1f1; -} - -.swagger-ui .topbar a{ - flex: none; + background: #f1f1f1; +} + +.swagger-ui .topbar a { + flex: none; max-width: none; -} - +} + .topbar-wrapper a { content: url(../../images/logo.svg); - float: left; + float: left; width: 358px; height: 87px; -} - +} + .swagger-ui .topbar .download-url-wrapper .select-label { - color: #1f1f1f; -} - -.swagger-ui { + color: #1f1f1f; +} + +.swagger-ui { font-size: small; -} \ No newline at end of file +} \ No newline at end of file -- GitLab From da4bfb65472a286ed1b5c2c4656da45857eb4868 Mon Sep 17 00:00:00 2001 From: David Rauh <david.rauh@uba.de> Date: Mon, 24 Jun 2024 15:12:09 +0000 Subject: [PATCH 8/9] reset workdir at end of dockerfile --- docker/Dockerfile-swagger-ui | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile-swagger-ui b/docker/Dockerfile-swagger-ui index a3a009a..ae0b945 100644 --- a/docker/Dockerfile-swagger-ui +++ b/docker/Dockerfile-swagger-ui @@ -11,4 +11,6 @@ ENV URLS="[{url: \"./openapi/swagger-nsiws-v2.json\", name: \"NSIWS-v2\"},\ {url: \"./openapi/swagger-transfer-v3.json\", name: \"TRANSFER-v3\"},\ {url: \"./openapi/swagger-transfer-v2.json\", name: \"TRANSFER-v2\"},\ {url: \"./openapi/swagger-transfer-v1.2.json\", name: \"TRANSFER-v1.2\"}]" -ENV URLS_PRIMARY_NAME="NSIWS-v1" \ No newline at end of file +ENV URLS_PRIMARY_NAME="NSIWS-v1" +WORKDIR / + -- GitLab From 05414220ce6655eea38db12364649a3d3d97a985 Mon Sep 17 00:00:00 2001 From: David Rauh <david.rauh@uba.de> Date: Mon, 24 Jun 2024 15:22:02 +0000 Subject: [PATCH 9/9] update swagger link --- configs/dc/data-explorer/settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/dc/data-explorer/settings.json b/configs/dc/data-explorer/settings.json index 5a922c6..8cf2065 100644 --- a/configs/dc/data-explorer/settings.json +++ b/configs/dc/data-explorer/settings.json @@ -47,7 +47,7 @@ }, "viewer": { "api": { - "doc": "https://daten.uba.de/release/swagger/", + "doc": "https://daten.uba.de/swagger/", "contact": "https://datacube.uba.de/impressum" } }, -- GitLab