@grapity/grapity 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (642) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +214 -0
  3. package/bin/grapity +2 -0
  4. package/dist/assets/abap-BdImnpbu.js +2 -0
  5. package/dist/assets/abap-BdImnpbu.js.map +1 -0
  6. package/dist/assets/actionscript-3-CoDkCxhg.js +2 -0
  7. package/dist/assets/actionscript-3-CoDkCxhg.js.map +1 -0
  8. package/dist/assets/ada-bCR0ucgS.js +2 -0
  9. package/dist/assets/ada-bCR0ucgS.js.map +1 -0
  10. package/dist/assets/andromeeda-C4gqWexZ.js +2 -0
  11. package/dist/assets/andromeeda-C4gqWexZ.js.map +1 -0
  12. package/dist/assets/angular-html-DA-rfuFy.js +2 -0
  13. package/dist/assets/angular-html-DA-rfuFy.js.map +1 -0
  14. package/dist/assets/angular-ts-BrjP3tb8.js +2 -0
  15. package/dist/assets/angular-ts-BrjP3tb8.js.map +1 -0
  16. package/dist/assets/apache-Pmp26Uib.js +2 -0
  17. package/dist/assets/apache-Pmp26Uib.js.map +1 -0
  18. package/dist/assets/apex-Dqspr-GT.js +2 -0
  19. package/dist/assets/apex-Dqspr-GT.js.map +1 -0
  20. package/dist/assets/apl-CORt7UWP.js +2 -0
  21. package/dist/assets/apl-CORt7UWP.js.map +1 -0
  22. package/dist/assets/applescript-Co6uUVPk.js +2 -0
  23. package/dist/assets/applescript-Co6uUVPk.js.map +1 -0
  24. package/dist/assets/ara-BRHolxvo.js +2 -0
  25. package/dist/assets/ara-BRHolxvo.js.map +1 -0
  26. package/dist/assets/asciidoc-Ve4PFQV2.js +2 -0
  27. package/dist/assets/asciidoc-Ve4PFQV2.js.map +1 -0
  28. package/dist/assets/asm-D_Q5rh1f.js +2 -0
  29. package/dist/assets/asm-D_Q5rh1f.js.map +1 -0
  30. package/dist/assets/astro-HNnZUWAn.js +2 -0
  31. package/dist/assets/astro-HNnZUWAn.js.map +1 -0
  32. package/dist/assets/aurora-x-D-2ljcwZ.js +2 -0
  33. package/dist/assets/aurora-x-D-2ljcwZ.js.map +1 -0
  34. package/dist/assets/awk-DMzUqQB5.js +2 -0
  35. package/dist/assets/awk-DMzUqQB5.js.map +1 -0
  36. package/dist/assets/ayu-dark-DYE7WIF3.js +2 -0
  37. package/dist/assets/ayu-dark-DYE7WIF3.js.map +1 -0
  38. package/dist/assets/ayu-light-BA47KaF1.js +2 -0
  39. package/dist/assets/ayu-light-BA47KaF1.js.map +1 -0
  40. package/dist/assets/ayu-mirage-32ctXXKs.js +2 -0
  41. package/dist/assets/ayu-mirage-32ctXXKs.js.map +1 -0
  42. package/dist/assets/ballerina-BFfxhgS-.js +2 -0
  43. package/dist/assets/ballerina-BFfxhgS-.js.map +1 -0
  44. package/dist/assets/bat-BkioyH1T.js +2 -0
  45. package/dist/assets/bat-BkioyH1T.js.map +1 -0
  46. package/dist/assets/beancount-k_qm7-4y.js +2 -0
  47. package/dist/assets/beancount-k_qm7-4y.js.map +1 -0
  48. package/dist/assets/berry-uYugtg8r.js +2 -0
  49. package/dist/assets/berry-uYugtg8r.js.map +1 -0
  50. package/dist/assets/bibtex-CHM0blh-.js +2 -0
  51. package/dist/assets/bibtex-CHM0blh-.js.map +1 -0
  52. package/dist/assets/bicep-Bmn6On1c.js +2 -0
  53. package/dist/assets/bicep-Bmn6On1c.js.map +1 -0
  54. package/dist/assets/bird2-BIv1doCn.js +2 -0
  55. package/dist/assets/bird2-BIv1doCn.js.map +1 -0
  56. package/dist/assets/blade-2xfisSek.js +2 -0
  57. package/dist/assets/blade-2xfisSek.js.map +1 -0
  58. package/dist/assets/bsl-BO_Y6i37.js +2 -0
  59. package/dist/assets/bsl-BO_Y6i37.js.map +1 -0
  60. package/dist/assets/c-BIGW1oBm.js +2 -0
  61. package/dist/assets/c-BIGW1oBm.js.map +1 -0
  62. package/dist/assets/c3-MRO5bC_T.js +2 -0
  63. package/dist/assets/c3-MRO5bC_T.js.map +1 -0
  64. package/dist/assets/cadence-Bv_4Rxtq.js +2 -0
  65. package/dist/assets/cadence-Bv_4Rxtq.js.map +1 -0
  66. package/dist/assets/cairo-KRGpt6FW.js +2 -0
  67. package/dist/assets/cairo-KRGpt6FW.js.map +1 -0
  68. package/dist/assets/catppuccin-frappe-DFWUc33u.js +2 -0
  69. package/dist/assets/catppuccin-frappe-DFWUc33u.js.map +1 -0
  70. package/dist/assets/catppuccin-latte-C9dUb6Cb.js +2 -0
  71. package/dist/assets/catppuccin-latte-C9dUb6Cb.js.map +1 -0
  72. package/dist/assets/catppuccin-macchiato-DQyhUUbL.js +2 -0
  73. package/dist/assets/catppuccin-macchiato-DQyhUUbL.js.map +1 -0
  74. package/dist/assets/catppuccin-mocha-D87Tk5Gz.js +2 -0
  75. package/dist/assets/catppuccin-mocha-D87Tk5Gz.js.map +1 -0
  76. package/dist/assets/clarity-D53aC0YG.js +2 -0
  77. package/dist/assets/clarity-D53aC0YG.js.map +1 -0
  78. package/dist/assets/clojure-P80f7IUj.js +2 -0
  79. package/dist/assets/clojure-P80f7IUj.js.map +1 -0
  80. package/dist/assets/cmake-D1j8_8rp.js +2 -0
  81. package/dist/assets/cmake-D1j8_8rp.js.map +1 -0
  82. package/dist/assets/cobol-nBiQ_Alo.js +2 -0
  83. package/dist/assets/cobol-nBiQ_Alo.js.map +1 -0
  84. package/dist/assets/codeowners-Bp6g37R7.js +2 -0
  85. package/dist/assets/codeowners-Bp6g37R7.js.map +1 -0
  86. package/dist/assets/codeql-DsOJ9woJ.js +2 -0
  87. package/dist/assets/codeql-DsOJ9woJ.js.map +1 -0
  88. package/dist/assets/coffee-Ch7k5sss.js +2 -0
  89. package/dist/assets/coffee-Ch7k5sss.js.map +1 -0
  90. package/dist/assets/common-lisp-Cg-RD9OK.js +2 -0
  91. package/dist/assets/common-lisp-Cg-RD9OK.js.map +1 -0
  92. package/dist/assets/coq-DkFqJrB1.js +2 -0
  93. package/dist/assets/coq-DkFqJrB1.js.map +1 -0
  94. package/dist/assets/cpp-UfJy6YNI.js +2 -0
  95. package/dist/assets/cpp-UfJy6YNI.js.map +1 -0
  96. package/dist/assets/crystal-DGywbUpC.js +2 -0
  97. package/dist/assets/crystal-DGywbUpC.js.map +1 -0
  98. package/dist/assets/csharp-DSvCPggb.js +2 -0
  99. package/dist/assets/csharp-DSvCPggb.js.map +1 -0
  100. package/dist/assets/css-CLj8gQPS.js +2 -0
  101. package/dist/assets/css-CLj8gQPS.js.map +1 -0
  102. package/dist/assets/csv-fuZLfV_i.js +2 -0
  103. package/dist/assets/csv-fuZLfV_i.js.map +1 -0
  104. package/dist/assets/cue-D82EKSYY.js +2 -0
  105. package/dist/assets/cue-D82EKSYY.js.map +1 -0
  106. package/dist/assets/cypher-COkxafJQ.js +2 -0
  107. package/dist/assets/cypher-COkxafJQ.js.map +1 -0
  108. package/dist/assets/d-85-TOEBH.js +2 -0
  109. package/dist/assets/d-85-TOEBH.js.map +1 -0
  110. package/dist/assets/dark-plus-C3mMm8J8.js +2 -0
  111. package/dist/assets/dark-plus-C3mMm8J8.js.map +1 -0
  112. package/dist/assets/dart-bE4Kk8sk.js +2 -0
  113. package/dist/assets/dart-bE4Kk8sk.js.map +1 -0
  114. package/dist/assets/dax-CEL-wOlO.js +2 -0
  115. package/dist/assets/dax-CEL-wOlO.js.map +1 -0
  116. package/dist/assets/desktop-BmXAJ9_W.js +2 -0
  117. package/dist/assets/desktop-BmXAJ9_W.js.map +1 -0
  118. package/dist/assets/diff-D97Zzqfu.js +2 -0
  119. package/dist/assets/diff-D97Zzqfu.js.map +1 -0
  120. package/dist/assets/docker-BcOcwvcX.js +2 -0
  121. package/dist/assets/docker-BcOcwvcX.js.map +1 -0
  122. package/dist/assets/dotenv-Da5cRb03.js +2 -0
  123. package/dist/assets/dotenv-Da5cRb03.js.map +1 -0
  124. package/dist/assets/dracula-BzJJZx-M.js +2 -0
  125. package/dist/assets/dracula-BzJJZx-M.js.map +1 -0
  126. package/dist/assets/dracula-soft-BXkSAIEj.js +2 -0
  127. package/dist/assets/dracula-soft-BXkSAIEj.js.map +1 -0
  128. package/dist/assets/dream-maker-BtqSS_iP.js +2 -0
  129. package/dist/assets/dream-maker-BtqSS_iP.js.map +1 -0
  130. package/dist/assets/edge-FbVlp4U3.js +2 -0
  131. package/dist/assets/edge-FbVlp4U3.js.map +1 -0
  132. package/dist/assets/elixir-CkH2-t6x.js +2 -0
  133. package/dist/assets/elixir-CkH2-t6x.js.map +1 -0
  134. package/dist/assets/elm-DbKCFpqz.js +2 -0
  135. package/dist/assets/elm-DbKCFpqz.js.map +1 -0
  136. package/dist/assets/emacs-lisp-CXvaQtF9.js +2 -0
  137. package/dist/assets/emacs-lisp-CXvaQtF9.js.map +1 -0
  138. package/dist/assets/erb-Dm6A9KJ5.js +2 -0
  139. package/dist/assets/erb-Dm6A9KJ5.js.map +1 -0
  140. package/dist/assets/erlang-DsQrWhSR.js +2 -0
  141. package/dist/assets/erlang-DsQrWhSR.js.map +1 -0
  142. package/dist/assets/everforest-dark-BgDCqdQA.js +2 -0
  143. package/dist/assets/everforest-dark-BgDCqdQA.js.map +1 -0
  144. package/dist/assets/everforest-light-C8M2exoo.js +2 -0
  145. package/dist/assets/everforest-light-C8M2exoo.js.map +1 -0
  146. package/dist/assets/fennel-BYunw83y.js +2 -0
  147. package/dist/assets/fennel-BYunw83y.js.map +1 -0
  148. package/dist/assets/fish-BvzEVeQv.js +2 -0
  149. package/dist/assets/fish-BvzEVeQv.js.map +1 -0
  150. package/dist/assets/fluent-C4IJs8-o.js +2 -0
  151. package/dist/assets/fluent-C4IJs8-o.js.map +1 -0
  152. package/dist/assets/fortran-fixed-form-CkoXwp7k.js +2 -0
  153. package/dist/assets/fortran-fixed-form-CkoXwp7k.js.map +1 -0
  154. package/dist/assets/fortran-free-form-BxgE0vQu.js +2 -0
  155. package/dist/assets/fortran-free-form-BxgE0vQu.js.map +1 -0
  156. package/dist/assets/fsharp-CXgrBDvD.js +2 -0
  157. package/dist/assets/fsharp-CXgrBDvD.js.map +1 -0
  158. package/dist/assets/gdresource-BOOCDP_w.js +2 -0
  159. package/dist/assets/gdresource-BOOCDP_w.js.map +1 -0
  160. package/dist/assets/gdscript-C5YyOfLZ.js +2 -0
  161. package/dist/assets/gdscript-C5YyOfLZ.js.map +1 -0
  162. package/dist/assets/gdshader-DkwncUOv.js +2 -0
  163. package/dist/assets/gdshader-DkwncUOv.js.map +1 -0
  164. package/dist/assets/genie-D0YGMca9.js +2 -0
  165. package/dist/assets/genie-D0YGMca9.js.map +1 -0
  166. package/dist/assets/gherkin-DyxjwDmM.js +2 -0
  167. package/dist/assets/gherkin-DyxjwDmM.js.map +1 -0
  168. package/dist/assets/git-commit-F4YmCXRG.js +2 -0
  169. package/dist/assets/git-commit-F4YmCXRG.js.map +1 -0
  170. package/dist/assets/git-rebase-r7XF79zn.js +2 -0
  171. package/dist/assets/git-rebase-r7XF79zn.js.map +1 -0
  172. package/dist/assets/github-dark-DHJKELXO.js +2 -0
  173. package/dist/assets/github-dark-DHJKELXO.js.map +1 -0
  174. package/dist/assets/github-dark-default-Cuk6v7N8.js +2 -0
  175. package/dist/assets/github-dark-default-Cuk6v7N8.js.map +1 -0
  176. package/dist/assets/github-dark-dimmed-DH5Ifo-i.js +2 -0
  177. package/dist/assets/github-dark-dimmed-DH5Ifo-i.js.map +1 -0
  178. package/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +2 -0
  179. package/dist/assets/github-dark-high-contrast-E3gJ1_iC.js.map +1 -0
  180. package/dist/assets/github-light-DAi9KRSo.js +2 -0
  181. package/dist/assets/github-light-DAi9KRSo.js.map +1 -0
  182. package/dist/assets/github-light-default-D7oLnXFd.js +2 -0
  183. package/dist/assets/github-light-default-D7oLnXFd.js.map +1 -0
  184. package/dist/assets/github-light-high-contrast-BfjtVDDH.js +2 -0
  185. package/dist/assets/github-light-high-contrast-BfjtVDDH.js.map +1 -0
  186. package/dist/assets/gleam-BspZqrRM.js +2 -0
  187. package/dist/assets/gleam-BspZqrRM.js.map +1 -0
  188. package/dist/assets/glimmer-js-ByusRIyA.js +2 -0
  189. package/dist/assets/glimmer-js-ByusRIyA.js.map +1 -0
  190. package/dist/assets/glimmer-ts-BfAWNZQY.js +2 -0
  191. package/dist/assets/glimmer-ts-BfAWNZQY.js.map +1 -0
  192. package/dist/assets/glsl-DplSGwfg.js +2 -0
  193. package/dist/assets/glsl-DplSGwfg.js.map +1 -0
  194. package/dist/assets/gn-n2N0HUVH.js +2 -0
  195. package/dist/assets/gn-n2N0HUVH.js.map +1 -0
  196. package/dist/assets/gnuplot-DdkO51Og.js +2 -0
  197. package/dist/assets/gnuplot-DdkO51Og.js.map +1 -0
  198. package/dist/assets/go-C27-OAKa.js +2 -0
  199. package/dist/assets/go-C27-OAKa.js.map +1 -0
  200. package/dist/assets/graphql-ChdNCCLP.js +2 -0
  201. package/dist/assets/graphql-ChdNCCLP.js.map +1 -0
  202. package/dist/assets/groovy-gcz8RCvz.js +2 -0
  203. package/dist/assets/groovy-gcz8RCvz.js.map +1 -0
  204. package/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +2 -0
  205. package/dist/assets/gruvbox-dark-hard-CFHQjOhq.js.map +1 -0
  206. package/dist/assets/gruvbox-dark-medium-GsRaNv29.js +2 -0
  207. package/dist/assets/gruvbox-dark-medium-GsRaNv29.js.map +1 -0
  208. package/dist/assets/gruvbox-dark-soft-CVdnzihN.js +2 -0
  209. package/dist/assets/gruvbox-dark-soft-CVdnzihN.js.map +1 -0
  210. package/dist/assets/gruvbox-light-hard-CH1njM8p.js +2 -0
  211. package/dist/assets/gruvbox-light-hard-CH1njM8p.js.map +1 -0
  212. package/dist/assets/gruvbox-light-medium-DRw_LuNl.js +2 -0
  213. package/dist/assets/gruvbox-light-medium-DRw_LuNl.js.map +1 -0
  214. package/dist/assets/gruvbox-light-soft-hJgmCMqR.js +2 -0
  215. package/dist/assets/gruvbox-light-soft-hJgmCMqR.js.map +1 -0
  216. package/dist/assets/hack-DbPARsA_.js +2 -0
  217. package/dist/assets/hack-DbPARsA_.js.map +1 -0
  218. package/dist/assets/haml-D5jkg6IW.js +2 -0
  219. package/dist/assets/haml-D5jkg6IW.js.map +1 -0
  220. package/dist/assets/handlebars-BpdQsYii.js +2 -0
  221. package/dist/assets/handlebars-BpdQsYii.js.map +1 -0
  222. package/dist/assets/haskell-Df6bDoY_.js +2 -0
  223. package/dist/assets/haskell-Df6bDoY_.js.map +1 -0
  224. package/dist/assets/haxe-CzTSHFRz.js +2 -0
  225. package/dist/assets/haxe-CzTSHFRz.js.map +1 -0
  226. package/dist/assets/hcl-BWvSN4gD.js +2 -0
  227. package/dist/assets/hcl-BWvSN4gD.js.map +1 -0
  228. package/dist/assets/hjson-D5-asLiD.js +2 -0
  229. package/dist/assets/hjson-D5-asLiD.js.map +1 -0
  230. package/dist/assets/hlsl-D3lLCCz7.js +2 -0
  231. package/dist/assets/hlsl-D3lLCCz7.js.map +1 -0
  232. package/dist/assets/horizon-BUw7H-hv.js +2 -0
  233. package/dist/assets/horizon-BUw7H-hv.js.map +1 -0
  234. package/dist/assets/horizon-bright-CUuTKBJd.js +2 -0
  235. package/dist/assets/horizon-bright-CUuTKBJd.js.map +1 -0
  236. package/dist/assets/houston-DnULxvSX.js +2 -0
  237. package/dist/assets/houston-DnULxvSX.js.map +1 -0
  238. package/dist/assets/html-derivative-DlHx6ybY.js +2 -0
  239. package/dist/assets/html-derivative-DlHx6ybY.js.map +1 -0
  240. package/dist/assets/html-pp8916En.js +2 -0
  241. package/dist/assets/html-pp8916En.js.map +1 -0
  242. package/dist/assets/http-jrhK8wxY.js +2 -0
  243. package/dist/assets/http-jrhK8wxY.js.map +1 -0
  244. package/dist/assets/hurl-irOxFIW8.js +2 -0
  245. package/dist/assets/hurl-irOxFIW8.js.map +1 -0
  246. package/dist/assets/hxml-Bvhsp5Yf.js +2 -0
  247. package/dist/assets/hxml-Bvhsp5Yf.js.map +1 -0
  248. package/dist/assets/hy-DFXneXwc.js +2 -0
  249. package/dist/assets/hy-DFXneXwc.js.map +1 -0
  250. package/dist/assets/imba-DGztddWO.js +2 -0
  251. package/dist/assets/imba-DGztddWO.js.map +1 -0
  252. package/dist/assets/index-Dq5tdnlb.js +326 -0
  253. package/dist/assets/index-Dq5tdnlb.js.map +1 -0
  254. package/dist/assets/index-NJpHAonA.css +1 -0
  255. package/dist/assets/ini-BEwlwnbL.js +2 -0
  256. package/dist/assets/ini-BEwlwnbL.js.map +1 -0
  257. package/dist/assets/java-CylS5w8V.js +2 -0
  258. package/dist/assets/java-CylS5w8V.js.map +1 -0
  259. package/dist/assets/javascript-wDzz0qaB.js +2 -0
  260. package/dist/assets/javascript-wDzz0qaB.js.map +1 -0
  261. package/dist/assets/jinja-f2NsQr07.js +2 -0
  262. package/dist/assets/jinja-f2NsQr07.js.map +1 -0
  263. package/dist/assets/jison-wvAkD_A8.js +2 -0
  264. package/dist/assets/jison-wvAkD_A8.js.map +1 -0
  265. package/dist/assets/json-Cp-IABpG.js +2 -0
  266. package/dist/assets/json-Cp-IABpG.js.map +1 -0
  267. package/dist/assets/json5-C9tS-k6U.js +2 -0
  268. package/dist/assets/json5-C9tS-k6U.js.map +1 -0
  269. package/dist/assets/jsonc-Des-eS-w.js +2 -0
  270. package/dist/assets/jsonc-Des-eS-w.js.map +1 -0
  271. package/dist/assets/jsonl-DcaNXYhu.js +2 -0
  272. package/dist/assets/jsonl-DcaNXYhu.js.map +1 -0
  273. package/dist/assets/jsonnet-DFQXde-d.js +2 -0
  274. package/dist/assets/jsonnet-DFQXde-d.js.map +1 -0
  275. package/dist/assets/jssm-C2t-YnRu.js +2 -0
  276. package/dist/assets/jssm-C2t-YnRu.js.map +1 -0
  277. package/dist/assets/jsx-g9-lgVsj.js +2 -0
  278. package/dist/assets/jsx-g9-lgVsj.js.map +1 -0
  279. package/dist/assets/julia-D7OTSIA_.js +2 -0
  280. package/dist/assets/julia-D7OTSIA_.js.map +1 -0
  281. package/dist/assets/just-CUsbIsdP.js +2 -0
  282. package/dist/assets/just-CUsbIsdP.js.map +1 -0
  283. package/dist/assets/kanagawa-dragon-CkXjmgJE.js +2 -0
  284. package/dist/assets/kanagawa-dragon-CkXjmgJE.js.map +1 -0
  285. package/dist/assets/kanagawa-lotus-CfQXZHmo.js +2 -0
  286. package/dist/assets/kanagawa-lotus-CfQXZHmo.js.map +1 -0
  287. package/dist/assets/kanagawa-wave-DWedfzmr.js +2 -0
  288. package/dist/assets/kanagawa-wave-DWedfzmr.js.map +1 -0
  289. package/dist/assets/kdl-DV7GczEv.js +2 -0
  290. package/dist/assets/kdl-DV7GczEv.js.map +1 -0
  291. package/dist/assets/kotlin-BdnUsdx6.js +2 -0
  292. package/dist/assets/kotlin-BdnUsdx6.js.map +1 -0
  293. package/dist/assets/kusto-wEQ09or8.js +2 -0
  294. package/dist/assets/kusto-wEQ09or8.js.map +1 -0
  295. package/dist/assets/laserwave-DUszq2jm.js +2 -0
  296. package/dist/assets/laserwave-DUszq2jm.js.map +1 -0
  297. package/dist/assets/latex-CaSxy8MP.js +2 -0
  298. package/dist/assets/latex-CaSxy8MP.js.map +1 -0
  299. package/dist/assets/lean-BZvkOJ9d.js +2 -0
  300. package/dist/assets/lean-BZvkOJ9d.js.map +1 -0
  301. package/dist/assets/less-B1dDrJ26.js +2 -0
  302. package/dist/assets/less-B1dDrJ26.js.map +1 -0
  303. package/dist/assets/light-plus-B7mTdjB0.js +2 -0
  304. package/dist/assets/light-plus-B7mTdjB0.js.map +1 -0
  305. package/dist/assets/liquid-C0sCDyMI.js +2 -0
  306. package/dist/assets/liquid-C0sCDyMI.js.map +1 -0
  307. package/dist/assets/llvm-DjAJT7YJ.js +2 -0
  308. package/dist/assets/llvm-DjAJT7YJ.js.map +1 -0
  309. package/dist/assets/log-2UxHyX5q.js +2 -0
  310. package/dist/assets/log-2UxHyX5q.js.map +1 -0
  311. package/dist/assets/logo-BtOb2qkB.js +2 -0
  312. package/dist/assets/logo-BtOb2qkB.js.map +1 -0
  313. package/dist/assets/lua-BaeVxFsk.js +2 -0
  314. package/dist/assets/lua-BaeVxFsk.js.map +1 -0
  315. package/dist/assets/luau-KW6xsasC.js +2 -0
  316. package/dist/assets/luau-KW6xsasC.js.map +1 -0
  317. package/dist/assets/make-CHLpvVh8.js +2 -0
  318. package/dist/assets/make-CHLpvVh8.js.map +1 -0
  319. package/dist/assets/markdown-Cvjx9yec.js +2 -0
  320. package/dist/assets/markdown-Cvjx9yec.js.map +1 -0
  321. package/dist/assets/marko-DjSrsDqO.js +2 -0
  322. package/dist/assets/marko-DjSrsDqO.js.map +1 -0
  323. package/dist/assets/material-theme-D5KoaKCx.js +2 -0
  324. package/dist/assets/material-theme-D5KoaKCx.js.map +1 -0
  325. package/dist/assets/material-theme-darker-BfHTSMKl.js +2 -0
  326. package/dist/assets/material-theme-darker-BfHTSMKl.js.map +1 -0
  327. package/dist/assets/material-theme-lighter-B0m2ddpp.js +2 -0
  328. package/dist/assets/material-theme-lighter-B0m2ddpp.js.map +1 -0
  329. package/dist/assets/material-theme-ocean-CyktbL80.js +2 -0
  330. package/dist/assets/material-theme-ocean-CyktbL80.js.map +1 -0
  331. package/dist/assets/material-theme-palenight-Csfq5Kiy.js +2 -0
  332. package/dist/assets/material-theme-palenight-Csfq5Kiy.js.map +1 -0
  333. package/dist/assets/matlab-D7o27uSR.js +2 -0
  334. package/dist/assets/matlab-D7o27uSR.js.map +1 -0
  335. package/dist/assets/mdc-DTYItulj.js +2 -0
  336. package/dist/assets/mdc-DTYItulj.js.map +1 -0
  337. package/dist/assets/mdx-Cmh6b_Ma.js +2 -0
  338. package/dist/assets/mdx-Cmh6b_Ma.js.map +1 -0
  339. package/dist/assets/mermaid-mWjccvbQ.js +2 -0
  340. package/dist/assets/mermaid-mWjccvbQ.js.map +1 -0
  341. package/dist/assets/min-dark-CafNBF8u.js +2 -0
  342. package/dist/assets/min-dark-CafNBF8u.js.map +1 -0
  343. package/dist/assets/min-light-CTRr51gU.js +2 -0
  344. package/dist/assets/min-light-CTRr51gU.js.map +1 -0
  345. package/dist/assets/mipsasm-CKIfxQSi.js +2 -0
  346. package/dist/assets/mipsasm-CKIfxQSi.js.map +1 -0
  347. package/dist/assets/mojo-rZm6bMo-.js +2 -0
  348. package/dist/assets/mojo-rZm6bMo-.js.map +1 -0
  349. package/dist/assets/monokai-D4h5O-jR.js +2 -0
  350. package/dist/assets/monokai-D4h5O-jR.js.map +1 -0
  351. package/dist/assets/moonbit-_H4v1dQx.js +2 -0
  352. package/dist/assets/moonbit-_H4v1dQx.js.map +1 -0
  353. package/dist/assets/move-IF9eRakj.js +2 -0
  354. package/dist/assets/move-IF9eRakj.js.map +1 -0
  355. package/dist/assets/narrat-DRg8JJMk.js +2 -0
  356. package/dist/assets/narrat-DRg8JJMk.js.map +1 -0
  357. package/dist/assets/nextflow-C-mBbutL.js +2 -0
  358. package/dist/assets/nextflow-C-mBbutL.js.map +1 -0
  359. package/dist/assets/nextflow-groovy-vE_lwT2v.js +2 -0
  360. package/dist/assets/nextflow-groovy-vE_lwT2v.js.map +1 -0
  361. package/dist/assets/nginx-BpAMiNFr.js +2 -0
  362. package/dist/assets/nginx-BpAMiNFr.js.map +1 -0
  363. package/dist/assets/night-owl-C39BiMTA.js +2 -0
  364. package/dist/assets/night-owl-C39BiMTA.js.map +1 -0
  365. package/dist/assets/night-owl-light-CMTm3GFP.js +2 -0
  366. package/dist/assets/night-owl-light-CMTm3GFP.js.map +1 -0
  367. package/dist/assets/nim-BIad80T-.js +2 -0
  368. package/dist/assets/nim-BIad80T-.js.map +1 -0
  369. package/dist/assets/nix-CwoSXNpI.js +2 -0
  370. package/dist/assets/nix-CwoSXNpI.js.map +1 -0
  371. package/dist/assets/nord-Ddv68eIx.js +2 -0
  372. package/dist/assets/nord-Ddv68eIx.js.map +1 -0
  373. package/dist/assets/nushell-Cz2AlsmD.js +2 -0
  374. package/dist/assets/nushell-Cz2AlsmD.js.map +1 -0
  375. package/dist/assets/objective-c-DXmwc3jG.js +2 -0
  376. package/dist/assets/objective-c-DXmwc3jG.js.map +1 -0
  377. package/dist/assets/objective-cpp-CLxacb5B.js +2 -0
  378. package/dist/assets/objective-cpp-CLxacb5B.js.map +1 -0
  379. package/dist/assets/ocaml-C0hk2d4L.js +2 -0
  380. package/dist/assets/ocaml-C0hk2d4L.js.map +1 -0
  381. package/dist/assets/odin-BBf5iR-q.js +2 -0
  382. package/dist/assets/odin-BBf5iR-q.js.map +1 -0
  383. package/dist/assets/one-dark-pro-DVMEJ2y_.js +2 -0
  384. package/dist/assets/one-dark-pro-DVMEJ2y_.js.map +1 -0
  385. package/dist/assets/one-light-C3Wv6jpd.js +2 -0
  386. package/dist/assets/one-light-C3Wv6jpd.js.map +1 -0
  387. package/dist/assets/openscad-C4EeE6gA.js +2 -0
  388. package/dist/assets/openscad-C4EeE6gA.js.map +1 -0
  389. package/dist/assets/pascal-D93ZcfNL.js +2 -0
  390. package/dist/assets/pascal-D93ZcfNL.js.map +1 -0
  391. package/dist/assets/perl-B9cMNwum.js +2 -0
  392. package/dist/assets/perl-B9cMNwum.js.map +1 -0
  393. package/dist/assets/php-Csjmro_R.js +2 -0
  394. package/dist/assets/php-Csjmro_R.js.map +1 -0
  395. package/dist/assets/pkl-u5AG7uiY.js +2 -0
  396. package/dist/assets/pkl-u5AG7uiY.js.map +1 -0
  397. package/dist/assets/plastic-3e1v2bzS.js +2 -0
  398. package/dist/assets/plastic-3e1v2bzS.js.map +1 -0
  399. package/dist/assets/plsql-ChMvpjG-.js +2 -0
  400. package/dist/assets/plsql-ChMvpjG-.js.map +1 -0
  401. package/dist/assets/po-BTJTHyun.js +2 -0
  402. package/dist/assets/po-BTJTHyun.js.map +1 -0
  403. package/dist/assets/poimandres-CS3Unz2-.js +2 -0
  404. package/dist/assets/poimandres-CS3Unz2-.js.map +1 -0
  405. package/dist/assets/polar-C0HS_06l.js +2 -0
  406. package/dist/assets/polar-C0HS_06l.js.map +1 -0
  407. package/dist/assets/postcss-CXtECtnM.js +2 -0
  408. package/dist/assets/postcss-CXtECtnM.js.map +1 -0
  409. package/dist/assets/powerquery-CEu0bR-o.js +2 -0
  410. package/dist/assets/powerquery-CEu0bR-o.js.map +1 -0
  411. package/dist/assets/powershell-Dpen1YoG.js +2 -0
  412. package/dist/assets/powershell-Dpen1YoG.js.map +1 -0
  413. package/dist/assets/prisma-Dd19v3D-.js +2 -0
  414. package/dist/assets/prisma-Dd19v3D-.js.map +1 -0
  415. package/dist/assets/prolog-CbFg5uaA.js +2 -0
  416. package/dist/assets/prolog-CbFg5uaA.js.map +1 -0
  417. package/dist/assets/proto-C7zT0LnQ.js +2 -0
  418. package/dist/assets/proto-C7zT0LnQ.js.map +1 -0
  419. package/dist/assets/pug-DKIMFp6K.js +2 -0
  420. package/dist/assets/pug-DKIMFp6K.js.map +1 -0
  421. package/dist/assets/puppet-BMWR74SV.js +2 -0
  422. package/dist/assets/puppet-BMWR74SV.js.map +1 -0
  423. package/dist/assets/purescript-CklMAg4u.js +2 -0
  424. package/dist/assets/purescript-CklMAg4u.js.map +1 -0
  425. package/dist/assets/python-B6aJPvgy.js +2 -0
  426. package/dist/assets/python-B6aJPvgy.js.map +1 -0
  427. package/dist/assets/qml-3beO22l8.js +2 -0
  428. package/dist/assets/qml-3beO22l8.js.map +1 -0
  429. package/dist/assets/qmldir-C8lEn-DE.js +2 -0
  430. package/dist/assets/qmldir-C8lEn-DE.js.map +1 -0
  431. package/dist/assets/qss-IeuSbFQv.js +2 -0
  432. package/dist/assets/qss-IeuSbFQv.js.map +1 -0
  433. package/dist/assets/r-Dspwwk_N.js +2 -0
  434. package/dist/assets/r-Dspwwk_N.js.map +1 -0
  435. package/dist/assets/racket-BqYA7rlc.js +2 -0
  436. package/dist/assets/racket-BqYA7rlc.js.map +1 -0
  437. package/dist/assets/raku-DXvB9xmW.js +2 -0
  438. package/dist/assets/raku-DXvB9xmW.js.map +1 -0
  439. package/dist/assets/razor-BjBPvh-w.js +2 -0
  440. package/dist/assets/razor-BjBPvh-w.js.map +1 -0
  441. package/dist/assets/red-bN70gL4F.js +2 -0
  442. package/dist/assets/red-bN70gL4F.js.map +1 -0
  443. package/dist/assets/reg-C-SQnVFl.js +2 -0
  444. package/dist/assets/reg-C-SQnVFl.js.map +1 -0
  445. package/dist/assets/regexp-CDVJQ6XC.js +2 -0
  446. package/dist/assets/regexp-CDVJQ6XC.js.map +1 -0
  447. package/dist/assets/rel-C3B-1QV4.js +2 -0
  448. package/dist/assets/rel-C3B-1QV4.js.map +1 -0
  449. package/dist/assets/riscv-BM1_JUlF.js +2 -0
  450. package/dist/assets/riscv-BM1_JUlF.js.map +1 -0
  451. package/dist/assets/ron-D8l8udqQ.js +2 -0
  452. package/dist/assets/ron-D8l8udqQ.js.map +1 -0
  453. package/dist/assets/rose-pine-dawn-DHQR4-dF.js +2 -0
  454. package/dist/assets/rose-pine-dawn-DHQR4-dF.js.map +1 -0
  455. package/dist/assets/rose-pine-moon-D4_iv3hh.js +2 -0
  456. package/dist/assets/rose-pine-moon-D4_iv3hh.js.map +1 -0
  457. package/dist/assets/rose-pine-qdsjHGoJ.js +2 -0
  458. package/dist/assets/rose-pine-qdsjHGoJ.js.map +1 -0
  459. package/dist/assets/rosmsg-BJDFO7_C.js +2 -0
  460. package/dist/assets/rosmsg-BJDFO7_C.js.map +1 -0
  461. package/dist/assets/rst-CpCqk9r5.js +2 -0
  462. package/dist/assets/rst-CpCqk9r5.js.map +1 -0
  463. package/dist/assets/ruby-DyJCeAvU.js +2 -0
  464. package/dist/assets/ruby-DyJCeAvU.js.map +1 -0
  465. package/dist/assets/rust-B1yitclQ.js +2 -0
  466. package/dist/assets/rust-B1yitclQ.js.map +1 -0
  467. package/dist/assets/sas-DEy46yEz.js +2 -0
  468. package/dist/assets/sas-DEy46yEz.js.map +1 -0
  469. package/dist/assets/sass-Cj5Yp3dK.js +2 -0
  470. package/dist/assets/sass-Cj5Yp3dK.js.map +1 -0
  471. package/dist/assets/scala-C151Ov-r.js +2 -0
  472. package/dist/assets/scala-C151Ov-r.js.map +1 -0
  473. package/dist/assets/scheme-C98Dy4si.js +2 -0
  474. package/dist/assets/scheme-C98Dy4si.js.map +1 -0
  475. package/dist/assets/scss-D5BDwBP9.js +2 -0
  476. package/dist/assets/scss-D5BDwBP9.js.map +1 -0
  477. package/dist/assets/sdbl-DVxCFoDh.js +2 -0
  478. package/dist/assets/sdbl-DVxCFoDh.js.map +1 -0
  479. package/dist/assets/shaderlab-Dg9Lc6iA.js +2 -0
  480. package/dist/assets/shaderlab-Dg9Lc6iA.js.map +1 -0
  481. package/dist/assets/shellscript-Yzrsuije.js +2 -0
  482. package/dist/assets/shellscript-Yzrsuije.js.map +1 -0
  483. package/dist/assets/shellsession-BADoaaVG.js +2 -0
  484. package/dist/assets/shellsession-BADoaaVG.js.map +1 -0
  485. package/dist/assets/slack-dark-BthQWCQV.js +2 -0
  486. package/dist/assets/slack-dark-BthQWCQV.js.map +1 -0
  487. package/dist/assets/slack-ochin-DqwNpetd.js +2 -0
  488. package/dist/assets/slack-ochin-DqwNpetd.js.map +1 -0
  489. package/dist/assets/smalltalk-BERRCDM3.js +2 -0
  490. package/dist/assets/smalltalk-BERRCDM3.js.map +1 -0
  491. package/dist/assets/snazzy-light-Bw305WKR.js +2 -0
  492. package/dist/assets/snazzy-light-Bw305WKR.js.map +1 -0
  493. package/dist/assets/solarized-dark-DXbdFlpD.js +2 -0
  494. package/dist/assets/solarized-dark-DXbdFlpD.js.map +1 -0
  495. package/dist/assets/solarized-light-L9t79GZl.js +2 -0
  496. package/dist/assets/solarized-light-L9t79GZl.js.map +1 -0
  497. package/dist/assets/solidity-rGO070M0.js +2 -0
  498. package/dist/assets/solidity-rGO070M0.js.map +1 -0
  499. package/dist/assets/soy-8wufbnw4.js +2 -0
  500. package/dist/assets/soy-8wufbnw4.js.map +1 -0
  501. package/dist/assets/sparql-rVzFXLq3.js +2 -0
  502. package/dist/assets/sparql-rVzFXLq3.js.map +1 -0
  503. package/dist/assets/splunk-BtCnVYZw.js +2 -0
  504. package/dist/assets/splunk-BtCnVYZw.js.map +1 -0
  505. package/dist/assets/sql-CRqJ_cUM.js +2 -0
  506. package/dist/assets/sql-CRqJ_cUM.js.map +1 -0
  507. package/dist/assets/ssh-config-_ykCGR6B.js +2 -0
  508. package/dist/assets/ssh-config-_ykCGR6B.js.map +1 -0
  509. package/dist/assets/stata-DI20mbqo.js +2 -0
  510. package/dist/assets/stata-DI20mbqo.js.map +1 -0
  511. package/dist/assets/stylus-BEDo0Tqx.js +2 -0
  512. package/dist/assets/stylus-BEDo0Tqx.js.map +1 -0
  513. package/dist/assets/surrealql-Bq5Q-fJD.js +2 -0
  514. package/dist/assets/surrealql-Bq5Q-fJD.js.map +1 -0
  515. package/dist/assets/svelte-Cy7k_4gC.js +2 -0
  516. package/dist/assets/svelte-Cy7k_4gC.js.map +1 -0
  517. package/dist/assets/swift-D82vCrfD.js +2 -0
  518. package/dist/assets/swift-D82vCrfD.js.map +1 -0
  519. package/dist/assets/synthwave-84-CbfX1IO0.js +2 -0
  520. package/dist/assets/synthwave-84-CbfX1IO0.js.map +1 -0
  521. package/dist/assets/system-verilog-CnnmHF94.js +2 -0
  522. package/dist/assets/system-verilog-CnnmHF94.js.map +1 -0
  523. package/dist/assets/systemd-4A_iFExJ.js +2 -0
  524. package/dist/assets/systemd-4A_iFExJ.js.map +1 -0
  525. package/dist/assets/talonscript-CkByrt1z.js +2 -0
  526. package/dist/assets/talonscript-CkByrt1z.js.map +1 -0
  527. package/dist/assets/tasl-QIJgUcNo.js +2 -0
  528. package/dist/assets/tasl-QIJgUcNo.js.map +1 -0
  529. package/dist/assets/tcl-dwOrl1Do.js +2 -0
  530. package/dist/assets/tcl-dwOrl1Do.js.map +1 -0
  531. package/dist/assets/templ-DhtptRzy.js +2 -0
  532. package/dist/assets/templ-DhtptRzy.js.map +1 -0
  533. package/dist/assets/terraform-BETggiCN.js +2 -0
  534. package/dist/assets/terraform-BETggiCN.js.map +1 -0
  535. package/dist/assets/tex-idrVyKtj.js +2 -0
  536. package/dist/assets/tex-idrVyKtj.js.map +1 -0
  537. package/dist/assets/tokyo-night-hegEt444.js +2 -0
  538. package/dist/assets/tokyo-night-hegEt444.js.map +1 -0
  539. package/dist/assets/toml-vGWfd6FD.js +2 -0
  540. package/dist/assets/toml-vGWfd6FD.js.map +1 -0
  541. package/dist/assets/ts-tags-D351s5mN.js +2 -0
  542. package/dist/assets/ts-tags-D351s5mN.js.map +1 -0
  543. package/dist/assets/tsv-B_m7g4N7.js +2 -0
  544. package/dist/assets/tsv-B_m7g4N7.js.map +1 -0
  545. package/dist/assets/tsx-COt5Ahok.js +2 -0
  546. package/dist/assets/tsx-COt5Ahok.js.map +1 -0
  547. package/dist/assets/turtle-BsS91CYL.js +2 -0
  548. package/dist/assets/turtle-BsS91CYL.js.map +1 -0
  549. package/dist/assets/twig-CW1WmMYd.js +2 -0
  550. package/dist/assets/twig-CW1WmMYd.js.map +1 -0
  551. package/dist/assets/typescript-BPQ3VLAy.js +2 -0
  552. package/dist/assets/typescript-BPQ3VLAy.js.map +1 -0
  553. package/dist/assets/typespec-CAFt9gP4.js +2 -0
  554. package/dist/assets/typespec-CAFt9gP4.js.map +1 -0
  555. package/dist/assets/typst-DHCkPAjA.js +2 -0
  556. package/dist/assets/typst-DHCkPAjA.js.map +1 -0
  557. package/dist/assets/v-BcVCzyr7.js +2 -0
  558. package/dist/assets/v-BcVCzyr7.js.map +1 -0
  559. package/dist/assets/vala-CsfeWuGM.js +2 -0
  560. package/dist/assets/vala-CsfeWuGM.js.map +1 -0
  561. package/dist/assets/vb-D17OF-Vu.js +2 -0
  562. package/dist/assets/vb-D17OF-Vu.js.map +1 -0
  563. package/dist/assets/verilog-BQ8w6xss.js +2 -0
  564. package/dist/assets/verilog-BQ8w6xss.js.map +1 -0
  565. package/dist/assets/vesper-DRje8inN.js +2 -0
  566. package/dist/assets/vesper-DRje8inN.js.map +1 -0
  567. package/dist/assets/vhdl-CeAyd5Ju.js +2 -0
  568. package/dist/assets/vhdl-CeAyd5Ju.js.map +1 -0
  569. package/dist/assets/viml-CJc9bBzg.js +2 -0
  570. package/dist/assets/viml-CJc9bBzg.js.map +1 -0
  571. package/dist/assets/vitesse-black-Bkuqu6BP.js +2 -0
  572. package/dist/assets/vitesse-black-Bkuqu6BP.js.map +1 -0
  573. package/dist/assets/vitesse-dark-D0r3Knsf.js +2 -0
  574. package/dist/assets/vitesse-dark-D0r3Knsf.js.map +1 -0
  575. package/dist/assets/vitesse-light-CVO1_9PV.js +2 -0
  576. package/dist/assets/vitesse-light-CVO1_9PV.js.map +1 -0
  577. package/dist/assets/vue-D2xRrEX4.js +2 -0
  578. package/dist/assets/vue-D2xRrEX4.js.map +1 -0
  579. package/dist/assets/vue-html-AaS7Mt5G.js +2 -0
  580. package/dist/assets/vue-html-AaS7Mt5G.js.map +1 -0
  581. package/dist/assets/vue-vine-BoDAl6tE.js +2 -0
  582. package/dist/assets/vue-vine-BoDAl6tE.js.map +1 -0
  583. package/dist/assets/vyper-CDx5xZoG.js +2 -0
  584. package/dist/assets/vyper-CDx5xZoG.js.map +1 -0
  585. package/dist/assets/wasm-CG6Dc4jp.js +2 -0
  586. package/dist/assets/wasm-CG6Dc4jp.js.map +1 -0
  587. package/dist/assets/wasm-MzD3tlZU.js +2 -0
  588. package/dist/assets/wasm-MzD3tlZU.js.map +1 -0
  589. package/dist/assets/wenyan-BV7otONQ.js +2 -0
  590. package/dist/assets/wenyan-BV7otONQ.js.map +1 -0
  591. package/dist/assets/wgsl-Dx-B1_4e.js +2 -0
  592. package/dist/assets/wgsl-Dx-B1_4e.js.map +1 -0
  593. package/dist/assets/wikitext-BhOHFoWU.js +2 -0
  594. package/dist/assets/wikitext-BhOHFoWU.js.map +1 -0
  595. package/dist/assets/wit-5i3qLPDT.js +2 -0
  596. package/dist/assets/wit-5i3qLPDT.js.map +1 -0
  597. package/dist/assets/wolfram-lXgVvXCa.js +2 -0
  598. package/dist/assets/wolfram-lXgVvXCa.js.map +1 -0
  599. package/dist/assets/xml-sdJ4AIDG.js +2 -0
  600. package/dist/assets/xml-sdJ4AIDG.js.map +1 -0
  601. package/dist/assets/xsl-CtQFsRM5.js +2 -0
  602. package/dist/assets/xsl-CtQFsRM5.js.map +1 -0
  603. package/dist/assets/yaml-Buea-lGh.js +2 -0
  604. package/dist/assets/yaml-Buea-lGh.js.map +1 -0
  605. package/dist/assets/zenscript-DVFEvuxE.js +2 -0
  606. package/dist/assets/zenscript-DVFEvuxE.js.map +1 -0
  607. package/dist/assets/zig-VOosw3JB.js +2 -0
  608. package/dist/assets/zig-VOosw3JB.js.map +1 -0
  609. package/dist/cli/index.d.ts +2 -0
  610. package/dist/cli/index.js +5100 -0
  611. package/dist/core/index.d.ts +3640 -0
  612. package/dist/core/index.js +0 -0
  613. package/dist/favicon.svg +11 -0
  614. package/dist/hub/index.d.ts +1 -0
  615. package/dist/hub/index.js +54 -0
  616. package/dist/hub/serve.d.ts +7 -0
  617. package/dist/hub/serve.js +54 -0
  618. package/dist/index.html +18 -0
  619. package/dist/registry/index-Baj_sSgl.d.ts +218 -0
  620. package/dist/registry/index.d.ts +3 -0
  621. package/dist/registry/index.js +2981 -0
  622. package/dist/registry/serve.d.ts +7 -0
  623. package/dist/registry/serve.js +3523 -0
  624. package/drizzle/migrations/pg/0000_brief_night_thrasher.sql +39 -0
  625. package/drizzle/migrations/pg/0001_remarkable_swarm.sql +4 -0
  626. package/drizzle/migrations/pg/0002_wandering_vanisher.sql +38 -0
  627. package/drizzle/migrations/pg/0003_overrated_surge.sql +20 -0
  628. package/drizzle/migrations/pg/meta/0000_snapshot.json +250 -0
  629. package/drizzle/migrations/pg/meta/0001_snapshot.json +318 -0
  630. package/drizzle/migrations/pg/meta/0002_snapshot.json +571 -0
  631. package/drizzle/migrations/pg/meta/0003_snapshot.json +732 -0
  632. package/drizzle/migrations/pg/meta/_journal.json +34 -0
  633. package/drizzle/migrations/sqlite/0000_curly_firebrand.sql +39 -0
  634. package/drizzle/migrations/sqlite/0001_amazing_purple_man.sql +4 -0
  635. package/drizzle/migrations/sqlite/0002_powerful_union_jack.sql +38 -0
  636. package/drizzle/migrations/sqlite/0003_aspiring_edwin_jarvis.sql +20 -0
  637. package/drizzle/migrations/sqlite/meta/0000_snapshot.json +268 -0
  638. package/drizzle/migrations/sqlite/meta/0001_snapshot.json +299 -0
  639. package/drizzle/migrations/sqlite/meta/0002_snapshot.json +543 -0
  640. package/drizzle/migrations/sqlite/meta/0003_snapshot.json +676 -0
  641. package/drizzle/migrations/sqlite/meta/_journal.json +34 -0
  642. package/package.json +116 -0
@@ -0,0 +1,3640 @@
1
+ type VersionClassification = "initial" | "major" | "minor" | "patch";
2
+ interface CompatReport {
3
+ previousVersion: string;
4
+ classification: VersionClassification;
5
+ breakingChanges: BreakingChange[];
6
+ safeChanges: SafeChange[];
7
+ suggestedVersion?: string;
8
+ }
9
+ interface BreakingChange {
10
+ id: string;
11
+ rule: string;
12
+ description: string;
13
+ path: string;
14
+ category: "structural" | "documentation";
15
+ originalValue?: string;
16
+ newValue?: string;
17
+ affectedConsumers?: string[];
18
+ }
19
+ interface SafeChange {
20
+ id: string;
21
+ rule: string;
22
+ description: string;
23
+ path: string;
24
+ category: "structural" | "documentation";
25
+ }
26
+
27
+ interface SpecVersion {
28
+ id: string;
29
+ specId: string;
30
+ semver: string;
31
+ content: string;
32
+ checksum: string;
33
+ gitRef?: string;
34
+ pushedBy?: string;
35
+ compatibility?: CompatReport;
36
+ previousVersion?: string;
37
+ forceReason?: string;
38
+ isPrerelease: boolean;
39
+ createdAt: Date;
40
+ }
41
+
42
+ type SpecType = "openapi" | "asyncapi";
43
+ interface Spec {
44
+ id: string;
45
+ name: string;
46
+ type: SpecType;
47
+ description?: string;
48
+ owner?: string;
49
+ sourceRepo?: string;
50
+ tags: string[];
51
+ createdAt: Date;
52
+ updatedAt: Date;
53
+ }
54
+
55
+ type AuditAction = "spec.push" | "spec.push.force" | "spec.delete";
56
+ interface SpecStore {
57
+ getSpec(name: string): Promise<Spec | null>;
58
+ getSpecVersion(name: string, semver: string): Promise<SpecVersion | null>;
59
+ getLatestVersion(name: string): Promise<SpecVersion | null>;
60
+ listSpecs(filters?: SpecFilters): Promise<Spec[]>;
61
+ listVersions(name: string, options?: {
62
+ limit?: number;
63
+ offset?: number;
64
+ }): Promise<{
65
+ versions: SpecVersion[];
66
+ total: number;
67
+ }>;
68
+ pushSpecVersion(spec: Spec, version: SpecVersion): Promise<SpecVersion>;
69
+ deleteSpec(name: string): Promise<boolean>;
70
+ getCompatReport(name: string, semver: string): Promise<CompatReport | null>;
71
+ logAudit(action: AuditAction, actor: string, specName: string, version: string | undefined, details: Record<string, unknown> | undefined): Promise<void>;
72
+ }
73
+ interface SpecFilters {
74
+ type?: SpecType;
75
+ owner?: string;
76
+ tags?: string[];
77
+ }
78
+
79
+ interface GatewayConfig {
80
+ id: string;
81
+ name: string;
82
+ provider: "kong";
83
+ specName: string;
84
+ specSemver: string;
85
+ createdAt: Date;
86
+ updatedAt: Date;
87
+ }
88
+ interface GatewayConfigVersion {
89
+ id: string;
90
+ gatewayConfigId: string;
91
+ routes: GatewayRoute[];
92
+ environments: GatewayEnvironment[];
93
+ callerIdentification?: CallerIdentification$1;
94
+ content: string;
95
+ checksum: string;
96
+ pushedBy?: string;
97
+ createdAt: Date;
98
+ }
99
+ interface CallerIdentification$1 {
100
+ strategy: "first-match";
101
+ rules: CallerIdentificationRule$1[];
102
+ }
103
+ interface CallerIdentificationRule$1 {
104
+ source: string;
105
+ confidence: "high" | "medium" | "low" | "anonymous";
106
+ }
107
+ interface GatewayRoute {
108
+ path: string;
109
+ methods: string[];
110
+ }
111
+ interface GatewayEnvironment {
112
+ name: string;
113
+ kongAddr: string;
114
+ upstream: string;
115
+ plugins: GatewayPlugin[];
116
+ }
117
+ interface GatewayPlugin {
118
+ name: string;
119
+ config: Record<string, unknown>;
120
+ order?: number;
121
+ }
122
+
123
+ type ProvisionAction = "gateway.push" | "gateway.provision";
124
+ interface Provision {
125
+ id: string;
126
+ gatewayConfigName: string;
127
+ gatewayConfigVersion: string;
128
+ environment: string;
129
+ provider: "kong";
130
+ synced: boolean;
131
+ actor: string;
132
+ details?: Record<string, unknown>;
133
+ createdAt: Date;
134
+ }
135
+
136
+ type CallerConfidence = "high" | "medium" | "low" | "anonymous";
137
+ interface CallerIdentificationRule {
138
+ source: string;
139
+ confidence: CallerConfidence;
140
+ }
141
+ interface CallerIdentification {
142
+ strategy: "first-match";
143
+ rules: CallerIdentificationRule[];
144
+ }
145
+ interface GatewayLog {
146
+ id: string;
147
+ provider: string;
148
+ gatewayConfigName: string;
149
+ environment: string;
150
+ method: string;
151
+ path: string;
152
+ routePath?: string;
153
+ status: number;
154
+ callerId?: string;
155
+ callerSource?: string;
156
+ callerConfidence: CallerConfidence;
157
+ occurredAt: Date;
158
+ createdAt: Date;
159
+ }
160
+ interface GatewayLogStats {
161
+ gatewayConfigName: string;
162
+ environment: string;
163
+ method: string;
164
+ routePath: string;
165
+ lastSeenAt: Date;
166
+ totalCalls: number;
167
+ uniqueCallerIds: number;
168
+ }
169
+ interface GatewayLogFilters {
170
+ gatewayConfigName?: string;
171
+ environment?: string;
172
+ path?: string;
173
+ method?: string;
174
+ status?: number;
175
+ from?: Date;
176
+ to?: Date;
177
+ limit?: number;
178
+ offset?: number;
179
+ }
180
+
181
+ interface GatewayConfigStore {
182
+ getGatewayConfig(name: string): Promise<GatewayConfig | null>;
183
+ listGatewayConfigs(): Promise<GatewayConfig[]>;
184
+ getGatewayConfigVersion(name: string, versionId: string): Promise<GatewayConfigVersion | null>;
185
+ getLatestGatewayConfigVersion(name: string): Promise<GatewayConfigVersion | null>;
186
+ listGatewayConfigVersions(name: string): Promise<GatewayConfigVersion[]>;
187
+ pushGatewayConfigVersion(config: GatewayConfig, version: GatewayConfigVersion): Promise<GatewayConfigVersion>;
188
+ recordProvision(provision: Provision): Promise<void>;
189
+ listProvisions(gatewayConfigName?: string): Promise<Provision[]>;
190
+ recordGatewayLog(log: GatewayLog): Promise<void>;
191
+ listGatewayLogs(filters: GatewayLogFilters): Promise<{
192
+ logs: GatewayLog[];
193
+ total: number;
194
+ }>;
195
+ getGatewayLog(id: string): Promise<GatewayLog | null>;
196
+ getGatewayLogStats(filters: GatewayLogFilters): Promise<GatewayLogStats[]>;
197
+ deleteGatewayLogsOlderThan(days: number): Promise<void>;
198
+ }
199
+
200
+ interface paths {
201
+ "/v1/health": {
202
+ parameters: {
203
+ query?: never;
204
+ header?: never;
205
+ path?: never;
206
+ cookie?: never;
207
+ };
208
+ /** Health check */
209
+ get: operations["getHealth"];
210
+ put?: never;
211
+ post?: never;
212
+ delete?: never;
213
+ options?: never;
214
+ head?: never;
215
+ patch?: never;
216
+ trace?: never;
217
+ };
218
+ "/v1/specs": {
219
+ parameters: {
220
+ query?: never;
221
+ header?: never;
222
+ path?: never;
223
+ cookie?: never;
224
+ };
225
+ /** List all specs */
226
+ get: operations["listSpecs"];
227
+ put?: never;
228
+ /**
229
+ * Push a spec version
230
+ * @description Push a new spec version to the registry. On the first push for a given name, the spec is created. On subsequent pushes, the spec is diffed against the previous version. Breaking changes are blocked unless `force: true` is provided with a reason.
231
+ */
232
+ post: operations["pushSpec"];
233
+ delete?: never;
234
+ options?: never;
235
+ head?: never;
236
+ patch?: never;
237
+ trace?: never;
238
+ };
239
+ "/v1/specs/{name}": {
240
+ parameters: {
241
+ query?: never;
242
+ header?: never;
243
+ path?: never;
244
+ cookie?: never;
245
+ };
246
+ /** Get a spec and its latest version */
247
+ get: operations["getSpec"];
248
+ put?: never;
249
+ post?: never;
250
+ /**
251
+ * Delete a spec and all its versions
252
+ * @description Deletes a spec and all associated versions from the registry. This action is permanent and cannot be undone. The operation is recorded in the audit log.
253
+ */
254
+ delete: operations["deleteSpec"];
255
+ options?: never;
256
+ head?: never;
257
+ patch?: never;
258
+ trace?: never;
259
+ };
260
+ "/v1/specs/{name}/validate": {
261
+ parameters: {
262
+ query?: never;
263
+ header?: never;
264
+ path?: never;
265
+ cookie?: never;
266
+ };
267
+ get?: never;
268
+ put?: never;
269
+ /**
270
+ * Validate a spec without pushing
271
+ * @description Validates the spec content and checks backward compatibility against the latest registered version for this name. Does not store anything.
272
+ */
273
+ post: operations["validateSpec"];
274
+ delete?: never;
275
+ options?: never;
276
+ head?: never;
277
+ patch?: never;
278
+ trace?: never;
279
+ };
280
+ "/v1/specs/{name}/versions": {
281
+ parameters: {
282
+ query?: never;
283
+ header?: never;
284
+ path?: never;
285
+ cookie?: never;
286
+ };
287
+ /**
288
+ * List all versions of a spec
289
+ * @description Returns versions ordered newest first.
290
+ */
291
+ get: operations["listVersions"];
292
+ put?: never;
293
+ post?: never;
294
+ delete?: never;
295
+ options?: never;
296
+ head?: never;
297
+ patch?: never;
298
+ trace?: never;
299
+ };
300
+ "/v1/specs/{name}/versions/{semver}": {
301
+ parameters: {
302
+ query?: never;
303
+ header?: never;
304
+ path?: never;
305
+ cookie?: never;
306
+ };
307
+ /** Get a specific version */
308
+ get: operations["getVersion"];
309
+ put?: never;
310
+ post?: never;
311
+ delete?: never;
312
+ options?: never;
313
+ head?: never;
314
+ patch?: never;
315
+ trace?: never;
316
+ };
317
+ "/v1/specs/{name}/spec.json": {
318
+ parameters: {
319
+ query?: never;
320
+ header?: never;
321
+ path?: never;
322
+ cookie?: never;
323
+ };
324
+ /**
325
+ * Get the latest spec as JSON
326
+ * @description Returns the latest version of the spec document as a parsed JSON object. The spec is converted to JSON regardless of the format it was pushed in. Content-Type reflects the spec type (OpenAPI or AsyncAPI).
327
+ */
328
+ get: operations["getSpecJson"];
329
+ put?: never;
330
+ post?: never;
331
+ delete?: never;
332
+ options?: never;
333
+ head?: never;
334
+ patch?: never;
335
+ trace?: never;
336
+ };
337
+ "/v1/specs/{name}/spec.yaml": {
338
+ parameters: {
339
+ query?: never;
340
+ header?: never;
341
+ path?: never;
342
+ cookie?: never;
343
+ };
344
+ /**
345
+ * Get the latest spec as YAML
346
+ * @description Returns the latest version of the spec document as YAML text. The spec is converted to YAML regardless of the format it was pushed in. Content-Type reflects the spec type (OpenAPI or AsyncAPI).
347
+ */
348
+ get: operations["getSpecYaml"];
349
+ put?: never;
350
+ post?: never;
351
+ delete?: never;
352
+ options?: never;
353
+ head?: never;
354
+ patch?: never;
355
+ trace?: never;
356
+ };
357
+ "/v1/specs/{name}/versions/{semver}/spec.json": {
358
+ parameters: {
359
+ query?: never;
360
+ header?: never;
361
+ path?: never;
362
+ cookie?: never;
363
+ };
364
+ /** Get a specific version as JSON */
365
+ get: operations["getVersionSpecJson"];
366
+ put?: never;
367
+ post?: never;
368
+ delete?: never;
369
+ options?: never;
370
+ head?: never;
371
+ patch?: never;
372
+ trace?: never;
373
+ };
374
+ "/v1/specs/{name}/versions/{semver}/spec.yaml": {
375
+ parameters: {
376
+ query?: never;
377
+ header?: never;
378
+ path?: never;
379
+ cookie?: never;
380
+ };
381
+ /** Get a specific version as YAML */
382
+ get: operations["getVersionSpecYaml"];
383
+ put?: never;
384
+ post?: never;
385
+ delete?: never;
386
+ options?: never;
387
+ head?: never;
388
+ patch?: never;
389
+ trace?: never;
390
+ };
391
+ "/v1/specs/{name}/compat/{semver}": {
392
+ parameters: {
393
+ query?: never;
394
+ header?: never;
395
+ path?: never;
396
+ cookie?: never;
397
+ };
398
+ /**
399
+ * Get the compatibility report for a version
400
+ * @description Returns the compatibility report generated when this version was pushed. Not available for the first version of a spec (no previous version to diff against).
401
+ */
402
+ get: operations["getCompatReport"];
403
+ put?: never;
404
+ post?: never;
405
+ delete?: never;
406
+ options?: never;
407
+ head?: never;
408
+ patch?: never;
409
+ trace?: never;
410
+ };
411
+ "/v1/specs/{name}/compare": {
412
+ parameters: {
413
+ query?: never;
414
+ header?: never;
415
+ path?: never;
416
+ cookie?: never;
417
+ };
418
+ /**
419
+ * Compare two versions of a spec
420
+ * @description Returns an incremental comparison between two versions. All versions between the two endpoints are included, ordered oldest to newest. The response contains the precomputed compatibility report for each step.
421
+ */
422
+ get: operations["compareVersions"];
423
+ put?: never;
424
+ post?: never;
425
+ delete?: never;
426
+ options?: never;
427
+ head?: never;
428
+ patch?: never;
429
+ trace?: never;
430
+ };
431
+ "/v1/gateway-configs": {
432
+ parameters: {
433
+ query?: never;
434
+ header?: never;
435
+ path?: never;
436
+ cookie?: never;
437
+ };
438
+ /** List all gateway configurations */
439
+ get: operations["listGatewayConfigs"];
440
+ put?: never;
441
+ /**
442
+ * Push a gateway configuration version
443
+ * @description Push a new gateway configuration version. On the first push for a given name, the config is created. On subsequent pushes, a new version is added and old versions are retained (up to 5).
444
+ */
445
+ post: operations["pushGatewayConfig"];
446
+ delete?: never;
447
+ options?: never;
448
+ head?: never;
449
+ patch?: never;
450
+ trace?: never;
451
+ };
452
+ "/v1/gateway-configs/{name}": {
453
+ parameters: {
454
+ query?: never;
455
+ header?: never;
456
+ path?: never;
457
+ cookie?: never;
458
+ };
459
+ /** Get a gateway configuration */
460
+ get: operations["getGatewayConfig"];
461
+ put?: never;
462
+ post?: never;
463
+ delete?: never;
464
+ options?: never;
465
+ head?: never;
466
+ patch?: never;
467
+ trace?: never;
468
+ };
469
+ "/v1/gateway-configs/{name}/versions": {
470
+ parameters: {
471
+ query?: never;
472
+ header?: never;
473
+ path?: never;
474
+ cookie?: never;
475
+ };
476
+ /** List all versions of a gateway configuration */
477
+ get: operations["listGatewayConfigVersions"];
478
+ put?: never;
479
+ post?: never;
480
+ delete?: never;
481
+ options?: never;
482
+ head?: never;
483
+ patch?: never;
484
+ trace?: never;
485
+ };
486
+ "/v1/gateway-configs/{name}/versions/{versionId}": {
487
+ parameters: {
488
+ query?: never;
489
+ header?: never;
490
+ path?: never;
491
+ cookie?: never;
492
+ };
493
+ /** Get a specific gateway configuration version */
494
+ get: operations["getGatewayConfigVersion"];
495
+ put?: never;
496
+ post?: never;
497
+ delete?: never;
498
+ options?: never;
499
+ head?: never;
500
+ patch?: never;
501
+ trace?: never;
502
+ };
503
+ "/v1/gateway-logs/ingest/{provider}/{environment}": {
504
+ parameters: {
505
+ query?: never;
506
+ header?: never;
507
+ path?: never;
508
+ cookie?: never;
509
+ };
510
+ get?: never;
511
+ put?: never;
512
+ /**
513
+ * Ingest a gateway access log
514
+ * @description Ingest a raw gateway access log entry. The payload format depends on the provider. For Kong, expects a Kong HTTP log payload.
515
+ */
516
+ post: operations["ingestGatewayLog"];
517
+ delete?: never;
518
+ options?: never;
519
+ head?: never;
520
+ patch?: never;
521
+ trace?: never;
522
+ };
523
+ "/v1/gateway-logs": {
524
+ parameters: {
525
+ query?: never;
526
+ header?: never;
527
+ path?: never;
528
+ cookie?: never;
529
+ };
530
+ /** Query gateway access logs */
531
+ get: operations["listGatewayLogs"];
532
+ put?: never;
533
+ post?: never;
534
+ delete?: never;
535
+ options?: never;
536
+ head?: never;
537
+ patch?: never;
538
+ trace?: never;
539
+ };
540
+ "/v1/gateway-logs/stats": {
541
+ parameters: {
542
+ query?: never;
543
+ header?: never;
544
+ path?: never;
545
+ cookie?: never;
546
+ };
547
+ /** Get gateway log usage statistics */
548
+ get: operations["getGatewayLogStats"];
549
+ put?: never;
550
+ post?: never;
551
+ delete?: never;
552
+ options?: never;
553
+ head?: never;
554
+ patch?: never;
555
+ trace?: never;
556
+ };
557
+ "/v1/gateway-logs/{id}": {
558
+ parameters: {
559
+ query?: never;
560
+ header?: never;
561
+ path?: never;
562
+ cookie?: never;
563
+ };
564
+ /** Get a single gateway log entry */
565
+ get: operations["getGatewayLog"];
566
+ put?: never;
567
+ post?: never;
568
+ delete?: never;
569
+ options?: never;
570
+ head?: never;
571
+ patch?: never;
572
+ trace?: never;
573
+ };
574
+ }
575
+ interface components {
576
+ schemas: {
577
+ SpecListItem: {
578
+ latestVersion?: components["schemas"]["SpecVersion"];
579
+ } & components["schemas"]["Spec"];
580
+ ListSpecsResponse: {
581
+ data: components["schemas"]["SpecListItem"][];
582
+ };
583
+ PaginationMeta: {
584
+ /** @example true */
585
+ hasMore: boolean;
586
+ /** @example 10 */
587
+ limit: number;
588
+ /** @example 0 */
589
+ offset: number;
590
+ /**
591
+ * @description Total number of items
592
+ * @example 42
593
+ */
594
+ total: number;
595
+ };
596
+ /** @enum {string} */
597
+ SpecType: "openapi" | "asyncapi";
598
+ /** @enum {string} */
599
+ VersionClassification: "initial" | "major" | "minor" | "patch";
600
+ Spec: {
601
+ /**
602
+ * Format: uuid
603
+ * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
604
+ */
605
+ id: string;
606
+ /** @example payments-api */
607
+ name: string;
608
+ type: components["schemas"]["SpecType"];
609
+ /** @example Payments service API */
610
+ description?: string;
611
+ /** @example platform-team */
612
+ owner?: string;
613
+ /**
614
+ * Format: uri
615
+ * @example https://github.com/acme/payments-service
616
+ */
617
+ sourceRepo?: string;
618
+ /**
619
+ * @example [
620
+ * "payments",
621
+ * "public"
622
+ * ]
623
+ */
624
+ tags: string[];
625
+ /**
626
+ * Format: date-time
627
+ * @example 2026-04-25T10:30:00.000Z
628
+ */
629
+ createdAt: Date;
630
+ /**
631
+ * Format: date-time
632
+ * @example 2026-06-07T14:00:00.000Z
633
+ */
634
+ updatedAt: Date;
635
+ };
636
+ SpecVersion: {
637
+ /**
638
+ * Format: uuid
639
+ * @example ver-uuid-1
640
+ */
641
+ id: string;
642
+ /**
643
+ * Format: uuid
644
+ * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
645
+ */
646
+ specId: string;
647
+ /** @example 1.2.0 */
648
+ semver: string;
649
+ /**
650
+ * @description SHA-256 hash of the content
651
+ * @example sha256-abc123...
652
+ */
653
+ checksum: string;
654
+ /**
655
+ * @description Git commit SHA at time of push
656
+ * @example a1b2c3d4
657
+ */
658
+ gitRef?: string;
659
+ /**
660
+ * @description User or CI identity that pushed this version
661
+ * @example github-actions[bot]
662
+ */
663
+ pushedBy?: string;
664
+ compatibility?: components["schemas"]["CompatReport"];
665
+ /**
666
+ * @description Semver of the previous version this was diffed against
667
+ * @example 1.1.0
668
+ */
669
+ previousVersion?: string;
670
+ /**
671
+ * @description Reason provided when force-pushing a breaking change
672
+ * @example security fix CVE-2026-1234
673
+ */
674
+ forceReason?: string;
675
+ /** @example false */
676
+ isPrerelease: boolean;
677
+ /**
678
+ * Format: date-time
679
+ * @example 2026-06-07T14:00:00.000Z
680
+ */
681
+ createdAt: Date;
682
+ };
683
+ CompatReport: {
684
+ /** @example 1.1.0 */
685
+ previousVersion: string;
686
+ classification: components["schemas"]["VersionClassification"];
687
+ breakingChanges: components["schemas"]["BreakingChange"][];
688
+ safeChanges: components["schemas"]["SafeChange"][];
689
+ /**
690
+ * @description The version the registry suggests based on the classification
691
+ * @example 2.0.0
692
+ */
693
+ suggestedVersion?: string;
694
+ };
695
+ /** BreakingChange */
696
+ BreakingChange: {
697
+ /** @example chg-2 */
698
+ id: string;
699
+ /**
700
+ * @description Machine-readable rule identifier. Treat as an open string — new rules will be added as the compat engine evolves. Known values: endpoint-removed, endpoint-removed-without-deprecation, endpoint-removed-missing-sunset, endpoint-removed-before-sunset, required-request-param-added, response-property-removed, response-status-removed, stable-endpoint-marked-draft.
701
+ * @example response-property-removed
702
+ */
703
+ rule: string;
704
+ /** @example Response property 'userId' was removed from GET /users/{id} */
705
+ description: string;
706
+ /** @example /users/{id}/GET/response/200/userId */
707
+ path: string;
708
+ /**
709
+ * @example structural
710
+ * @enum {string}
711
+ */
712
+ category: "structural" | "documentation";
713
+ /** @example string */
714
+ originalValue?: string;
715
+ /** @example null */
716
+ newValue?: string;
717
+ /**
718
+ * @example [
719
+ * "mobile-app",
720
+ * "web-portal"
721
+ * ]
722
+ */
723
+ affectedConsumers?: string[];
724
+ };
725
+ /** SafeChange */
726
+ SafeChange: {
727
+ /** @example chg-1 */
728
+ id: string;
729
+ /**
730
+ * @description Machine-readable rule identifier. Treat as an open string — new rules will be added as the compat engine evolves. Known values: endpoint-added, endpoint-deprecated, optional-request-param-added, response-status-added, draft-endpoint-changed.
731
+ * @example endpoint-added
732
+ */
733
+ rule: string;
734
+ /** @example Optional response property 'metadata' added to GET /users/{id} */
735
+ description: string;
736
+ /** @example /users/{id}/GET/response/200/metadata */
737
+ path: string;
738
+ /**
739
+ * @example structural
740
+ * @enum {string}
741
+ */
742
+ category: "structural" | "documentation";
743
+ };
744
+ ApiError: {
745
+ /**
746
+ * @description Machine-readable error code
747
+ * @example not_found
748
+ */
749
+ error: string;
750
+ /**
751
+ * @description Human-readable error description
752
+ * @example Spec "payments-api" not found
753
+ */
754
+ message: string;
755
+ /** @example 404 */
756
+ statusCode: number;
757
+ };
758
+ BreakingChangeError: components["schemas"]["ApiError"] & {
759
+ compatReport: components["schemas"]["CompatReport"];
760
+ };
761
+ HealthResponse: {
762
+ /** @enum {string} */
763
+ status: "ok";
764
+ /** @example 0.2.0 */
765
+ version: string;
766
+ /**
767
+ * @description Server uptime in seconds
768
+ * @example 3600.42
769
+ */
770
+ uptime: number;
771
+ };
772
+ PushSpecRequest: {
773
+ /**
774
+ * @description Raw OpenAPI or AsyncAPI document (YAML or JSON)
775
+ * @example openapi: 3.1.0
776
+ * info:
777
+ * title: Payments API
778
+ * version: 1.0.0
779
+ */
780
+ content: string;
781
+ /** @example payments-api */
782
+ name: string;
783
+ type?: components["schemas"]["SpecType"];
784
+ /** @example Payments service API */
785
+ description?: string;
786
+ /** @example platform-team */
787
+ owner?: string;
788
+ /** Format: uri */
789
+ sourceRepo?: string;
790
+ /**
791
+ * @example [
792
+ * "payments",
793
+ * "public"
794
+ * ]
795
+ */
796
+ tags?: string[];
797
+ /**
798
+ * @description Git commit SHA
799
+ * @example a1b2c3d4
800
+ */
801
+ gitRef?: string;
802
+ /**
803
+ * @description User or CI identity performing the push
804
+ * @example github-actions[bot]
805
+ */
806
+ pushedBy?: string;
807
+ /**
808
+ * @description Push as a prerelease version (0.x)
809
+ * @default false
810
+ */
811
+ prerelease: boolean;
812
+ /**
813
+ * @description Override breaking change block. Requires `reason`.
814
+ * @default false
815
+ */
816
+ force: boolean;
817
+ /**
818
+ * @description Required when `force` is true. Recorded in the audit log.
819
+ * @example security fix CVE-2026-1234
820
+ */
821
+ reason?: string;
822
+ };
823
+ PushSpecResponse: {
824
+ data: {
825
+ compatReport: components["schemas"]["CompatReport"];
826
+ /** @description True if this is the first version of this spec */
827
+ isNewSpec: boolean;
828
+ spec: components["schemas"]["Spec"];
829
+ version: components["schemas"]["SpecVersion"];
830
+ };
831
+ };
832
+ ValidateSpecRequest: {
833
+ /**
834
+ * @description Raw OpenAPI or AsyncAPI document (YAML or JSON)
835
+ * @example openapi: 3.1.0
836
+ * info:
837
+ * title: Payments API
838
+ * version: 1.0.0
839
+ */
840
+ content: string;
841
+ };
842
+ ValidateSpecResponse: {
843
+ data: {
844
+ compatReport?: components["schemas"]["CompatReport"];
845
+ errors?: string[];
846
+ valid: boolean;
847
+ warnings?: string[];
848
+ };
849
+ };
850
+ GetSpecResponse: {
851
+ data: {
852
+ latestVersion?: components["schemas"]["SpecVersion"];
853
+ spec: components["schemas"]["Spec"];
854
+ };
855
+ };
856
+ VersionsPage: {
857
+ data: components["schemas"]["SpecVersion"][];
858
+ pagination: components["schemas"]["PaginationMeta"];
859
+ };
860
+ GetVersionResponse: {
861
+ data: components["schemas"]["SpecVersion"];
862
+ };
863
+ GetCompatReportResponse: {
864
+ data: components["schemas"]["CompatReport"];
865
+ };
866
+ CompareStep: {
867
+ /** @example 1.1.0 */
868
+ version: string;
869
+ /** @example 1.0.0 */
870
+ previousVersion: string;
871
+ classification: components["schemas"]["VersionClassification"];
872
+ breakingChanges: components["schemas"]["BreakingChange"][];
873
+ safeChanges: components["schemas"]["SafeChange"][];
874
+ };
875
+ CompareVersionsResponse: {
876
+ data: {
877
+ /** @example 1.0.0 */
878
+ from: string;
879
+ /** @example 1.3.0 */
880
+ to: string;
881
+ steps: components["schemas"]["CompareStep"][];
882
+ };
883
+ };
884
+ GatewayConfig: {
885
+ /**
886
+ * Format: uuid
887
+ * @example cfg-uuid-1
888
+ */
889
+ id: string;
890
+ /** @example payments-api-gateway */
891
+ name: string;
892
+ /**
893
+ * @example kong
894
+ * @enum {string}
895
+ */
896
+ provider: "kong";
897
+ /** @example payments-api */
898
+ specName: string;
899
+ /** @example 1.2.0 */
900
+ specSemver: string;
901
+ /**
902
+ * Format: date-time
903
+ * @example 2026-04-25T10:30:00.000Z
904
+ */
905
+ createdAt: Date;
906
+ /**
907
+ * Format: date-time
908
+ * @example 2026-06-07T14:00:00.000Z
909
+ */
910
+ updatedAt: Date;
911
+ };
912
+ GatewayRoute: {
913
+ /** @example /payments */
914
+ path: string;
915
+ /**
916
+ * @example [
917
+ * "GET",
918
+ * "POST"
919
+ * ]
920
+ */
921
+ methods: string[];
922
+ };
923
+ GatewayPlugin: {
924
+ /** @example rate-limiting */
925
+ name: string;
926
+ /**
927
+ * @description Plugin-specific configuration
928
+ * @example {
929
+ * "minute": 1000
930
+ * }
931
+ */
932
+ config: {
933
+ [key: string]: unknown;
934
+ };
935
+ /**
936
+ * @description Execution order
937
+ * @example 1
938
+ */
939
+ order?: number;
940
+ };
941
+ GatewayEnvironment: {
942
+ /** @example staging */
943
+ name: string;
944
+ /** @example http://kong-staging:8001 */
945
+ kongAddr: string;
946
+ /** @example http://payments-staging:8080 */
947
+ upstream: string;
948
+ plugins: components["schemas"]["GatewayPlugin"][];
949
+ };
950
+ CallerIdentificationRule: {
951
+ /** @example header:x-consumer-id */
952
+ source: string;
953
+ /**
954
+ * @example high
955
+ * @enum {string}
956
+ */
957
+ confidence: "high" | "medium" | "low" | "anonymous";
958
+ };
959
+ CallerIdentification: {
960
+ /**
961
+ * @example first-match
962
+ * @enum {string}
963
+ */
964
+ strategy: "first-match";
965
+ rules: components["schemas"]["CallerIdentificationRule"][];
966
+ };
967
+ GatewayConfigVersion: {
968
+ /**
969
+ * Format: uuid
970
+ * @example ver-uuid-1
971
+ */
972
+ id: string;
973
+ /**
974
+ * Format: uuid
975
+ * @example cfg-uuid-1
976
+ */
977
+ gatewayConfigId: string;
978
+ routes: components["schemas"]["GatewayRoute"][];
979
+ environments: components["schemas"]["GatewayEnvironment"][];
980
+ callerIdentification?: components["schemas"]["CallerIdentification"];
981
+ /**
982
+ * @description Raw gateway config document
983
+ * @example apiVersion: v1
984
+ * kind: GatewayConfig
985
+ */
986
+ content: string;
987
+ /**
988
+ * @description SHA-256 hash of the content
989
+ * @example sha256-abc123...
990
+ */
991
+ checksum: string;
992
+ /** @example github-actions[bot] */
993
+ pushedBy?: string;
994
+ /**
995
+ * Format: date-time
996
+ * @example 2026-06-07T14:00:00.000Z
997
+ */
998
+ createdAt: Date;
999
+ };
1000
+ /** @description Gateway config version without the content field */
1001
+ PublicGatewayConfigVersion: {
1002
+ /** @description Content is omitted in list responses to keep them lightweight */
1003
+ content?: string | null;
1004
+ } & components["schemas"]["GatewayConfigVersion"];
1005
+ PushGatewayConfigRequest: {
1006
+ /** @example payments-api-gateway */
1007
+ name: string;
1008
+ /**
1009
+ * @example kong
1010
+ * @enum {string}
1011
+ */
1012
+ provider: "kong";
1013
+ /** @example payments-api */
1014
+ specName: string;
1015
+ /** @example 1.2.0 */
1016
+ specSemver: string;
1017
+ routes: components["schemas"]["GatewayRoute"][];
1018
+ /**
1019
+ * @example {
1020
+ * "staging": {
1021
+ * "name": "staging",
1022
+ * "kongAddr": "http://kong-staging:8001",
1023
+ * "upstream": "http://payments-staging:8080",
1024
+ * "plugins": [
1025
+ * {
1026
+ * "name": "rate-limiting",
1027
+ * "config": {
1028
+ * "minute": 1000
1029
+ * },
1030
+ * "order": 1
1031
+ * }
1032
+ * ]
1033
+ * }
1034
+ * }
1035
+ */
1036
+ environments: {
1037
+ [key: string]: {
1038
+ name: string;
1039
+ kongAddr: string;
1040
+ upstream: string;
1041
+ plugins: components["schemas"]["GatewayPlugin"][];
1042
+ };
1043
+ };
1044
+ callerIdentification?: components["schemas"]["CallerIdentification"];
1045
+ /**
1046
+ * @description Raw gateway config document
1047
+ * @example apiVersion: v1
1048
+ * kind: GatewayConfig
1049
+ */
1050
+ content: string;
1051
+ /** @example github-actions[bot] */
1052
+ pushedBy?: string;
1053
+ };
1054
+ PushGatewayConfigResponse: {
1055
+ data: {
1056
+ config: components["schemas"]["GatewayConfig"];
1057
+ version: components["schemas"]["GatewayConfigVersion"];
1058
+ };
1059
+ };
1060
+ ListGatewayConfigsResponse: {
1061
+ data: components["schemas"]["GatewayConfig"][];
1062
+ };
1063
+ GetGatewayConfigResponse: {
1064
+ data: components["schemas"]["GatewayConfig"];
1065
+ };
1066
+ ListGatewayConfigVersionsResponse: {
1067
+ data: components["schemas"]["PublicGatewayConfigVersion"][];
1068
+ };
1069
+ GetGatewayConfigVersionResponse: {
1070
+ data: components["schemas"]["GatewayConfigVersion"];
1071
+ };
1072
+ GatewayLog: {
1073
+ /**
1074
+ * Format: uuid
1075
+ * @example log-uuid-1
1076
+ */
1077
+ id: string;
1078
+ /** @example kong */
1079
+ provider: string;
1080
+ /** @example payments-api-gateway */
1081
+ gatewayConfigName: string;
1082
+ /** @example staging */
1083
+ environment: string;
1084
+ /** @example GET */
1085
+ method: string;
1086
+ /** @example /payments */
1087
+ path: string;
1088
+ /** @example /payments */
1089
+ routePath?: string;
1090
+ /** @example 200 */
1091
+ status: number;
1092
+ /** @example consumer-123 */
1093
+ callerId?: string;
1094
+ /** @example header:x-consumer-id */
1095
+ callerSource?: string;
1096
+ /**
1097
+ * @example high
1098
+ * @enum {string}
1099
+ */
1100
+ callerConfidence: "high" | "medium" | "low" | "anonymous";
1101
+ /**
1102
+ * Format: date-time
1103
+ * @example 2026-06-07T14:00:00.000Z
1104
+ */
1105
+ occurredAt: Date;
1106
+ /**
1107
+ * Format: date-time
1108
+ * @example 2026-06-07T14:00:01.000Z
1109
+ */
1110
+ createdAt: Date;
1111
+ };
1112
+ ListGatewayLogsResponse: {
1113
+ data: components["schemas"]["GatewayLog"][];
1114
+ pagination: components["schemas"]["PaginationMeta"];
1115
+ };
1116
+ GatewayLogStatEntry: {
1117
+ /** @example payments-api-gateway */
1118
+ gatewayConfigName: string;
1119
+ /** @example staging */
1120
+ environment: string;
1121
+ /** @example GET */
1122
+ method: string;
1123
+ /** @example /payments */
1124
+ routePath: string;
1125
+ /**
1126
+ * Format: date-time
1127
+ * @example 2026-06-07T14:00:00.000Z
1128
+ */
1129
+ lastSeenAt: Date;
1130
+ /** @example 15042 */
1131
+ totalCalls: number;
1132
+ /** @example 128 */
1133
+ uniqueCallerIds: number;
1134
+ };
1135
+ GetGatewayLogStatsResponse: {
1136
+ data: components["schemas"]["GatewayLogStatEntry"][];
1137
+ };
1138
+ GetGatewayLogResponse: {
1139
+ data: components["schemas"]["GatewayLog"];
1140
+ };
1141
+ };
1142
+ responses: never;
1143
+ parameters: {
1144
+ /**
1145
+ * @description URL-friendly spec identifier
1146
+ * @example payments-api
1147
+ */
1148
+ specName: string;
1149
+ /**
1150
+ * @description Semantic version
1151
+ * @example 1.2.0
1152
+ */
1153
+ semver: string;
1154
+ /**
1155
+ * @description URL-friendly gateway config identifier
1156
+ * @example payments-api-gateway
1157
+ */
1158
+ gatewayConfigName: string;
1159
+ /**
1160
+ * @description Gateway config version UUID
1161
+ * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
1162
+ */
1163
+ versionId: string;
1164
+ /**
1165
+ * @description Gateway provider (e.g., kong)
1166
+ * @example kong
1167
+ */
1168
+ provider: string;
1169
+ /**
1170
+ * @description Deployment environment (e.g., staging, production)
1171
+ * @example staging
1172
+ */
1173
+ environment: string;
1174
+ /**
1175
+ * @description Gateway log entry UUID
1176
+ * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
1177
+ */
1178
+ logId: string;
1179
+ };
1180
+ requestBodies: never;
1181
+ headers: never;
1182
+ pathItems: never;
1183
+ }
1184
+ interface operations {
1185
+ getHealth: {
1186
+ parameters: {
1187
+ query?: never;
1188
+ header?: never;
1189
+ path?: never;
1190
+ cookie?: never;
1191
+ };
1192
+ requestBody?: never;
1193
+ responses: {
1194
+ /** @description Server is healthy */
1195
+ 200: {
1196
+ headers: {
1197
+ [name: string]: unknown;
1198
+ };
1199
+ content: {
1200
+ /**
1201
+ * @example {
1202
+ * "status": "ok",
1203
+ * "version": "0.2.0",
1204
+ * "uptime": 3600.42
1205
+ * }
1206
+ */
1207
+ "application/json": components["schemas"]["HealthResponse"];
1208
+ };
1209
+ };
1210
+ /** @description Unauthorized */
1211
+ 401: {
1212
+ headers: {
1213
+ [name: string]: unknown;
1214
+ };
1215
+ content: {
1216
+ /**
1217
+ * @example {
1218
+ * "error": "unauthorized",
1219
+ * "message": "Invalid API key",
1220
+ * "statusCode": 401
1221
+ * }
1222
+ */
1223
+ "application/json": components["schemas"]["ApiError"];
1224
+ };
1225
+ };
1226
+ /** @description Internal server error */
1227
+ 500: {
1228
+ headers: {
1229
+ [name: string]: unknown;
1230
+ };
1231
+ content: {
1232
+ /**
1233
+ * @example {
1234
+ * "error": "internal_error",
1235
+ * "message": "Internal server error",
1236
+ * "statusCode": 500
1237
+ * }
1238
+ */
1239
+ "application/json": components["schemas"]["ApiError"];
1240
+ };
1241
+ };
1242
+ };
1243
+ };
1244
+ listSpecs: {
1245
+ parameters: {
1246
+ query?: {
1247
+ /** @description Filter by spec type */
1248
+ type?: components["schemas"]["SpecType"];
1249
+ /** @description Filter by owner */
1250
+ owner?: string;
1251
+ /**
1252
+ * @description Comma-separated list of tags to filter by
1253
+ * @example payments,public
1254
+ */
1255
+ tags?: string;
1256
+ };
1257
+ header?: never;
1258
+ path?: never;
1259
+ cookie?: never;
1260
+ };
1261
+ requestBody?: never;
1262
+ responses: {
1263
+ /** @description List of specs */
1264
+ 200: {
1265
+ headers: {
1266
+ [name: string]: unknown;
1267
+ };
1268
+ content: {
1269
+ /**
1270
+ * @example {
1271
+ * "data": [
1272
+ * {
1273
+ * "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
1274
+ * "name": "payments-api",
1275
+ * "type": "openapi",
1276
+ * "description": "Payments service API",
1277
+ * "owner": "platform-team",
1278
+ * "sourceRepo": "https://github.com/acme/payments-service",
1279
+ * "tags": [
1280
+ * "payments",
1281
+ * "public"
1282
+ * ],
1283
+ * "createdAt": "2026-04-25T10:30:00.000Z",
1284
+ * "updatedAt": "2026-06-07T14:00:00.000Z",
1285
+ * "latestVersion": {
1286
+ * "id": "ver-uuid-1",
1287
+ * "specId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
1288
+ * "semver": "1.2.0",
1289
+ * "checksum": "sha256-abc123",
1290
+ * "gitRef": "a1b2c3d4",
1291
+ * "pushedBy": "github-actions[bot]",
1292
+ * "previousVersion": "1.1.0",
1293
+ * "isPrerelease": false,
1294
+ * "createdAt": "2026-06-07T14:00:00.000Z"
1295
+ * }
1296
+ * },
1297
+ * {
1298
+ * "id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
1299
+ * "name": "notifications-api",
1300
+ * "type": "asyncapi",
1301
+ * "description": "Event-driven notifications",
1302
+ * "owner": "messaging-team",
1303
+ * "tags": [
1304
+ * "events",
1305
+ * "internal"
1306
+ * ],
1307
+ * "createdAt": "2026-05-01T09:00:00.000Z",
1308
+ * "updatedAt": "2026-05-15T11:30:00.000Z",
1309
+ * "latestVersion": {
1310
+ * "id": "ver-uuid-2",
1311
+ * "specId": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
1312
+ * "semver": "0.3.0",
1313
+ * "checksum": "sha256-def456",
1314
+ * "isPrerelease": true,
1315
+ * "createdAt": "2026-05-15T11:30:00.000Z"
1316
+ * }
1317
+ * }
1318
+ * ]
1319
+ * }
1320
+ */
1321
+ "application/json": components["schemas"]["ListSpecsResponse"];
1322
+ };
1323
+ };
1324
+ /** @description Unauthorized */
1325
+ 401: {
1326
+ headers: {
1327
+ [name: string]: unknown;
1328
+ };
1329
+ content: {
1330
+ /**
1331
+ * @example {
1332
+ * "error": "unauthorized",
1333
+ * "message": "Invalid API key",
1334
+ * "statusCode": 401
1335
+ * }
1336
+ */
1337
+ "application/json": components["schemas"]["ApiError"];
1338
+ };
1339
+ };
1340
+ /** @description Internal server error */
1341
+ 500: {
1342
+ headers: {
1343
+ [name: string]: unknown;
1344
+ };
1345
+ content: {
1346
+ /**
1347
+ * @example {
1348
+ * "error": "internal_error",
1349
+ * "message": "Internal server error",
1350
+ * "statusCode": 500
1351
+ * }
1352
+ */
1353
+ "application/json": components["schemas"]["ApiError"];
1354
+ };
1355
+ };
1356
+ };
1357
+ };
1358
+ pushSpec: {
1359
+ parameters: {
1360
+ query?: never;
1361
+ header?: never;
1362
+ path?: never;
1363
+ cookie?: never;
1364
+ };
1365
+ requestBody: {
1366
+ content: {
1367
+ /**
1368
+ * @example {
1369
+ * "content": "openapi: 3.1.0\ninfo:\n title: Payments API\n version: 1.0.0\npaths:\n /payments:\n get:\n operationId: listPayments\n responses:\n '200':\n description: OK\n",
1370
+ * "name": "payments-api",
1371
+ * "type": "openapi",
1372
+ * "description": "Payments service API",
1373
+ * "owner": "platform-team",
1374
+ * "sourceRepo": "https://github.com/acme/payments-service",
1375
+ * "tags": [
1376
+ * "payments",
1377
+ * "public"
1378
+ * ],
1379
+ * "gitRef": "a1b2c3d4",
1380
+ * "pushedBy": "github-actions[bot]",
1381
+ * "prerelease": false,
1382
+ * "force": false
1383
+ * }
1384
+ */
1385
+ "application/json": components["schemas"]["PushSpecRequest"];
1386
+ };
1387
+ };
1388
+ responses: {
1389
+ /** @description Spec version registered successfully */
1390
+ 201: {
1391
+ headers: {
1392
+ [name: string]: unknown;
1393
+ };
1394
+ content: {
1395
+ /**
1396
+ * @example {
1397
+ * "data": {
1398
+ * "isNewSpec": false,
1399
+ * "spec": {
1400
+ * "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
1401
+ * "name": "payments-api",
1402
+ * "type": "openapi",
1403
+ * "description": "Payments service API",
1404
+ * "owner": "platform-team",
1405
+ * "sourceRepo": "https://github.com/acme/payments-service",
1406
+ * "tags": [
1407
+ * "payments",
1408
+ * "public"
1409
+ * ],
1410
+ * "createdAt": "2026-04-25T10:30:00.000Z",
1411
+ * "updatedAt": "2026-06-07T14:00:00.000Z"
1412
+ * },
1413
+ * "version": {
1414
+ * "id": "ver-uuid-3",
1415
+ * "specId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
1416
+ * "semver": "1.2.0",
1417
+ * "checksum": "sha256-ghi789",
1418
+ * "gitRef": "a1b2c3d4",
1419
+ * "pushedBy": "github-actions[bot]",
1420
+ * "previousVersion": "1.1.0",
1421
+ * "isPrerelease": false,
1422
+ * "createdAt": "2026-06-07T14:00:00.000Z",
1423
+ * "compatibility": {
1424
+ * "previousVersion": "1.1.0",
1425
+ * "classification": "minor",
1426
+ * "suggestedVersion": "1.2.0",
1427
+ * "breakingChanges": [],
1428
+ * "safeChanges": [
1429
+ * {
1430
+ * "id": "chg-1",
1431
+ * "rule": "endpoint-added",
1432
+ * "description": "Endpoint GET /payments/{id}/refunds added",
1433
+ * "path": "/payments/{id}/refunds/GET"
1434
+ * }
1435
+ * ]
1436
+ * }
1437
+ * },
1438
+ * "compatReport": {
1439
+ * "previousVersion": "1.1.0",
1440
+ * "classification": "minor",
1441
+ * "suggestedVersion": "1.2.0",
1442
+ * "breakingChanges": [],
1443
+ * "safeChanges": [
1444
+ * {
1445
+ * "id": "chg-1",
1446
+ * "rule": "endpoint-added",
1447
+ * "description": "Endpoint GET /payments/{id}/refunds added",
1448
+ * "path": "/payments/{id}/refunds/GET"
1449
+ * }
1450
+ * ]
1451
+ * }
1452
+ * }
1453
+ * }
1454
+ */
1455
+ "application/json": components["schemas"]["PushSpecResponse"];
1456
+ };
1457
+ };
1458
+ /** @description Missing required fields or invalid spec content */
1459
+ 400: {
1460
+ headers: {
1461
+ [name: string]: unknown;
1462
+ };
1463
+ content: {
1464
+ /**
1465
+ * @example {
1466
+ * "error": "bad_request",
1467
+ * "message": "Missing required field: content",
1468
+ * "statusCode": 400
1469
+ * }
1470
+ */
1471
+ "application/json": components["schemas"]["ApiError"];
1472
+ };
1473
+ };
1474
+ /** @description Unauthorized */
1475
+ 401: {
1476
+ headers: {
1477
+ [name: string]: unknown;
1478
+ };
1479
+ content: {
1480
+ /**
1481
+ * @example {
1482
+ * "error": "unauthorized",
1483
+ * "message": "Invalid API key",
1484
+ * "statusCode": 401
1485
+ * }
1486
+ */
1487
+ "application/json": components["schemas"]["ApiError"];
1488
+ };
1489
+ };
1490
+ /** @description Breaking change detected. The spec breaks backward compatibility with the previous version. Use `force: true` with a `reason` to override and create an audit record. */
1491
+ 409: {
1492
+ headers: {
1493
+ [name: string]: unknown;
1494
+ };
1495
+ content: {
1496
+ /**
1497
+ * @example {
1498
+ * "error": "breaking_change",
1499
+ * "message": "Breaking changes detected. Use force: true with a reason to override.",
1500
+ * "statusCode": 409,
1501
+ * "compatReport": {
1502
+ * "previousVersion": "1.1.0",
1503
+ * "classification": "major",
1504
+ * "suggestedVersion": "2.0.0",
1505
+ * "breakingChanges": [
1506
+ * {
1507
+ * "id": "chg-2",
1508
+ * "rule": "response-property-removed",
1509
+ * "description": "Response property 'userId' was removed from GET /users/{id}",
1510
+ * "path": "/users/{id}/GET/response/200/userId"
1511
+ * }
1512
+ * ],
1513
+ * "safeChanges": []
1514
+ * }
1515
+ * }
1516
+ */
1517
+ "application/json": components["schemas"]["BreakingChangeError"];
1518
+ };
1519
+ };
1520
+ /** @description Prerelease constraint violation. A prerelease version (0.x) cannot be pushed after a release version (1.x+) has already been registered. */
1521
+ 422: {
1522
+ headers: {
1523
+ [name: string]: unknown;
1524
+ };
1525
+ content: {
1526
+ /**
1527
+ * @example {
1528
+ * "error": "prerelease_constraint",
1529
+ * "message": "Cannot push pre-release version. payments-api@1.1.0 is already a release version.",
1530
+ * "statusCode": 422
1531
+ * }
1532
+ */
1533
+ "application/json": components["schemas"]["ApiError"];
1534
+ };
1535
+ };
1536
+ /** @description Internal server error */
1537
+ 500: {
1538
+ headers: {
1539
+ [name: string]: unknown;
1540
+ };
1541
+ content: {
1542
+ /**
1543
+ * @example {
1544
+ * "error": "internal_error",
1545
+ * "message": "Internal server error",
1546
+ * "statusCode": 500
1547
+ * }
1548
+ */
1549
+ "application/json": components["schemas"]["ApiError"];
1550
+ };
1551
+ };
1552
+ };
1553
+ };
1554
+ getSpec: {
1555
+ parameters: {
1556
+ query?: never;
1557
+ header?: never;
1558
+ path: {
1559
+ /**
1560
+ * @description URL-friendly spec identifier
1561
+ * @example payments-api
1562
+ */
1563
+ name: components["parameters"]["specName"];
1564
+ };
1565
+ cookie?: never;
1566
+ };
1567
+ requestBody?: never;
1568
+ responses: {
1569
+ /** @description Spec metadata and latest version */
1570
+ 200: {
1571
+ headers: {
1572
+ [name: string]: unknown;
1573
+ };
1574
+ content: {
1575
+ /**
1576
+ * @example {
1577
+ * "data": {
1578
+ * "spec": {
1579
+ * "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
1580
+ * "name": "payments-api",
1581
+ * "type": "openapi",
1582
+ * "description": "Payments service API",
1583
+ * "owner": "platform-team",
1584
+ * "sourceRepo": "https://github.com/acme/payments-service",
1585
+ * "tags": [
1586
+ * "payments",
1587
+ * "public"
1588
+ * ],
1589
+ * "createdAt": "2026-04-25T10:30:00.000Z",
1590
+ * "updatedAt": "2026-06-07T14:00:00.000Z"
1591
+ * },
1592
+ * "latestVersion": {
1593
+ * "id": "ver-uuid-1",
1594
+ * "specId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
1595
+ * "semver": "1.2.0",
1596
+ * "checksum": "sha256-abc123",
1597
+ * "gitRef": "a1b2c3d4",
1598
+ * "pushedBy": "github-actions[bot]",
1599
+ * "previousVersion": "1.1.0",
1600
+ * "isPrerelease": false,
1601
+ * "createdAt": "2026-06-07T14:00:00.000Z"
1602
+ * }
1603
+ * }
1604
+ * }
1605
+ */
1606
+ "application/json": components["schemas"]["GetSpecResponse"];
1607
+ };
1608
+ };
1609
+ /** @description Unauthorized */
1610
+ 401: {
1611
+ headers: {
1612
+ [name: string]: unknown;
1613
+ };
1614
+ content: {
1615
+ /**
1616
+ * @example {
1617
+ * "error": "unauthorized",
1618
+ * "message": "Invalid API key",
1619
+ * "statusCode": 401
1620
+ * }
1621
+ */
1622
+ "application/json": components["schemas"]["ApiError"];
1623
+ };
1624
+ };
1625
+ /** @description Spec not found */
1626
+ 404: {
1627
+ headers: {
1628
+ [name: string]: unknown;
1629
+ };
1630
+ content: {
1631
+ /**
1632
+ * @example {
1633
+ * "error": "not_found",
1634
+ * "message": "Spec \"payments-api\" not found",
1635
+ * "statusCode": 404
1636
+ * }
1637
+ */
1638
+ "application/json": components["schemas"]["ApiError"];
1639
+ };
1640
+ };
1641
+ /** @description Internal server error */
1642
+ 500: {
1643
+ headers: {
1644
+ [name: string]: unknown;
1645
+ };
1646
+ content: {
1647
+ /**
1648
+ * @example {
1649
+ * "error": "internal_error",
1650
+ * "message": "Internal server error",
1651
+ * "statusCode": 500
1652
+ * }
1653
+ */
1654
+ "application/json": components["schemas"]["ApiError"];
1655
+ };
1656
+ };
1657
+ };
1658
+ };
1659
+ deleteSpec: {
1660
+ parameters: {
1661
+ query?: never;
1662
+ header?: never;
1663
+ path: {
1664
+ /**
1665
+ * @description URL-friendly spec identifier
1666
+ * @example payments-api
1667
+ */
1668
+ name: components["parameters"]["specName"];
1669
+ };
1670
+ cookie?: never;
1671
+ };
1672
+ requestBody?: never;
1673
+ responses: {
1674
+ /** @description Spec deleted successfully */
1675
+ 204: {
1676
+ headers: {
1677
+ [name: string]: unknown;
1678
+ };
1679
+ content?: never;
1680
+ };
1681
+ /** @description Unauthorized */
1682
+ 401: {
1683
+ headers: {
1684
+ [name: string]: unknown;
1685
+ };
1686
+ content: {
1687
+ /**
1688
+ * @example {
1689
+ * "error": "unauthorized",
1690
+ * "message": "Invalid API key",
1691
+ * "statusCode": 401
1692
+ * }
1693
+ */
1694
+ "application/json": components["schemas"]["ApiError"];
1695
+ };
1696
+ };
1697
+ /** @description Spec not found */
1698
+ 404: {
1699
+ headers: {
1700
+ [name: string]: unknown;
1701
+ };
1702
+ content: {
1703
+ /**
1704
+ * @example {
1705
+ * "error": "not_found",
1706
+ * "message": "Spec \"payments-api\" not found",
1707
+ * "statusCode": 404
1708
+ * }
1709
+ */
1710
+ "application/json": components["schemas"]["ApiError"];
1711
+ };
1712
+ };
1713
+ /** @description Internal server error */
1714
+ 500: {
1715
+ headers: {
1716
+ [name: string]: unknown;
1717
+ };
1718
+ content: {
1719
+ /**
1720
+ * @example {
1721
+ * "error": "internal_error",
1722
+ * "message": "Internal server error",
1723
+ * "statusCode": 500
1724
+ * }
1725
+ */
1726
+ "application/json": components["schemas"]["ApiError"];
1727
+ };
1728
+ };
1729
+ };
1730
+ };
1731
+ validateSpec: {
1732
+ parameters: {
1733
+ query?: never;
1734
+ header?: never;
1735
+ path: {
1736
+ /**
1737
+ * @description URL-friendly spec identifier
1738
+ * @example payments-api
1739
+ */
1740
+ name: components["parameters"]["specName"];
1741
+ };
1742
+ cookie?: never;
1743
+ };
1744
+ requestBody: {
1745
+ content: {
1746
+ /**
1747
+ * @example {
1748
+ * "content": "openapi: 3.1.0\ninfo:\n title: Payments API\n version: 1.0.0\npaths:\n /payments:\n get:\n operationId: listPayments\n responses:\n '200':\n description: OK\n"
1749
+ * }
1750
+ */
1751
+ "application/json": components["schemas"]["ValidateSpecRequest"];
1752
+ };
1753
+ };
1754
+ responses: {
1755
+ /** @description Validation result */
1756
+ 200: {
1757
+ headers: {
1758
+ [name: string]: unknown;
1759
+ };
1760
+ content: {
1761
+ /**
1762
+ * @example {
1763
+ * "data": {
1764
+ * "valid": true,
1765
+ * "compatReport": {
1766
+ * "previousVersion": "1.1.0",
1767
+ * "classification": "minor",
1768
+ * "suggestedVersion": "1.2.0",
1769
+ * "breakingChanges": [],
1770
+ * "safeChanges": [
1771
+ * {
1772
+ * "id": "chg-1",
1773
+ * "rule": "endpoint-added",
1774
+ * "description": "Endpoint GET /payments/{id}/refunds added",
1775
+ * "path": "/payments/{id}/refunds/GET"
1776
+ * }
1777
+ * ]
1778
+ * },
1779
+ * "warnings": []
1780
+ * }
1781
+ * }
1782
+ */
1783
+ "application/json": components["schemas"]["ValidateSpecResponse"];
1784
+ };
1785
+ };
1786
+ /** @description Missing required fields */
1787
+ 400: {
1788
+ headers: {
1789
+ [name: string]: unknown;
1790
+ };
1791
+ content: {
1792
+ /**
1793
+ * @example {
1794
+ * "error": "bad_request",
1795
+ * "message": "Request body must be valid JSON",
1796
+ * "statusCode": 400
1797
+ * }
1798
+ */
1799
+ "application/json": components["schemas"]["ApiError"];
1800
+ };
1801
+ };
1802
+ /** @description Unauthorized */
1803
+ 401: {
1804
+ headers: {
1805
+ [name: string]: unknown;
1806
+ };
1807
+ content: {
1808
+ /**
1809
+ * @example {
1810
+ * "error": "unauthorized",
1811
+ * "message": "Invalid API key",
1812
+ * "statusCode": 401
1813
+ * }
1814
+ */
1815
+ "application/json": components["schemas"]["ApiError"];
1816
+ };
1817
+ };
1818
+ /** @description Spec not found */
1819
+ 404: {
1820
+ headers: {
1821
+ [name: string]: unknown;
1822
+ };
1823
+ content: {
1824
+ /**
1825
+ * @example {
1826
+ * "error": "not_found",
1827
+ * "message": "Spec \"payments-api\" not found",
1828
+ * "statusCode": 404
1829
+ * }
1830
+ */
1831
+ "application/json": components["schemas"]["ApiError"];
1832
+ };
1833
+ };
1834
+ /** @description Internal server error */
1835
+ 500: {
1836
+ headers: {
1837
+ [name: string]: unknown;
1838
+ };
1839
+ content: {
1840
+ /**
1841
+ * @example {
1842
+ * "error": "internal_error",
1843
+ * "message": "Internal server error",
1844
+ * "statusCode": 500
1845
+ * }
1846
+ */
1847
+ "application/json": components["schemas"]["ApiError"];
1848
+ };
1849
+ };
1850
+ };
1851
+ };
1852
+ listVersions: {
1853
+ parameters: {
1854
+ query?: {
1855
+ /** @description Maximum number of versions to return */
1856
+ limit?: number;
1857
+ /** @description Number of versions to skip */
1858
+ offset?: number;
1859
+ };
1860
+ header?: never;
1861
+ path: {
1862
+ /**
1863
+ * @description URL-friendly spec identifier
1864
+ * @example payments-api
1865
+ */
1866
+ name: components["parameters"]["specName"];
1867
+ };
1868
+ cookie?: never;
1869
+ };
1870
+ requestBody?: never;
1871
+ responses: {
1872
+ /** @description Paginated list of versions */
1873
+ 200: {
1874
+ headers: {
1875
+ [name: string]: unknown;
1876
+ };
1877
+ content: {
1878
+ /**
1879
+ * @example {
1880
+ * "data": [
1881
+ * {
1882
+ * "id": "ver-uuid-1",
1883
+ * "specId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
1884
+ * "semver": "1.2.0",
1885
+ * "checksum": "sha256-abc123",
1886
+ * "gitRef": "a1b2c3d4",
1887
+ * "pushedBy": "github-actions[bot]",
1888
+ * "previousVersion": "1.1.0",
1889
+ * "isPrerelease": false,
1890
+ * "createdAt": "2026-06-07T14:00:00.000Z"
1891
+ * },
1892
+ * {
1893
+ * "id": "ver-uuid-0",
1894
+ * "specId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
1895
+ * "semver": "1.1.0",
1896
+ * "checksum": "sha256-old456",
1897
+ * "gitRef": "b2c3d4e5",
1898
+ * "pushedBy": "github-actions[bot]",
1899
+ * "previousVersion": "1.0.0",
1900
+ * "isPrerelease": false,
1901
+ * "createdAt": "2026-05-01T09:00:00.000Z"
1902
+ * }
1903
+ * ],
1904
+ * "pagination": {
1905
+ * "hasMore": false,
1906
+ * "limit": 10,
1907
+ * "offset": 0,
1908
+ * "total": 2
1909
+ * }
1910
+ * }
1911
+ */
1912
+ "application/json": components["schemas"]["VersionsPage"];
1913
+ };
1914
+ };
1915
+ /** @description Unauthorized */
1916
+ 401: {
1917
+ headers: {
1918
+ [name: string]: unknown;
1919
+ };
1920
+ content: {
1921
+ /**
1922
+ * @example {
1923
+ * "error": "unauthorized",
1924
+ * "message": "Invalid API key",
1925
+ * "statusCode": 401
1926
+ * }
1927
+ */
1928
+ "application/json": components["schemas"]["ApiError"];
1929
+ };
1930
+ };
1931
+ /** @description Spec not found */
1932
+ 404: {
1933
+ headers: {
1934
+ [name: string]: unknown;
1935
+ };
1936
+ content: {
1937
+ /**
1938
+ * @example {
1939
+ * "error": "not_found",
1940
+ * "message": "Spec \"payments-api\" not found",
1941
+ * "statusCode": 404
1942
+ * }
1943
+ */
1944
+ "application/json": components["schemas"]["ApiError"];
1945
+ };
1946
+ };
1947
+ /** @description Internal server error */
1948
+ 500: {
1949
+ headers: {
1950
+ [name: string]: unknown;
1951
+ };
1952
+ content: {
1953
+ /**
1954
+ * @example {
1955
+ * "error": "internal_error",
1956
+ * "message": "Internal server error",
1957
+ * "statusCode": 500
1958
+ * }
1959
+ */
1960
+ "application/json": components["schemas"]["ApiError"];
1961
+ };
1962
+ };
1963
+ };
1964
+ };
1965
+ getVersion: {
1966
+ parameters: {
1967
+ query?: never;
1968
+ header?: never;
1969
+ path: {
1970
+ /**
1971
+ * @description URL-friendly spec identifier
1972
+ * @example payments-api
1973
+ */
1974
+ name: components["parameters"]["specName"];
1975
+ /**
1976
+ * @description Semantic version
1977
+ * @example 1.2.0
1978
+ */
1979
+ semver: components["parameters"]["semver"];
1980
+ };
1981
+ cookie?: never;
1982
+ };
1983
+ requestBody?: never;
1984
+ responses: {
1985
+ /** @description Version detail including full spec content */
1986
+ 200: {
1987
+ headers: {
1988
+ [name: string]: unknown;
1989
+ };
1990
+ content: {
1991
+ /**
1992
+ * @example {
1993
+ * "data": {
1994
+ * "id": "ver-uuid-1",
1995
+ * "specId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
1996
+ * "semver": "1.2.0",
1997
+ * "checksum": "sha256-abc123",
1998
+ * "gitRef": "a1b2c3d4",
1999
+ * "pushedBy": "github-actions[bot]",
2000
+ * "previousVersion": "1.1.0",
2001
+ * "isPrerelease": false,
2002
+ * "createdAt": "2026-06-07T14:00:00.000Z"
2003
+ * }
2004
+ * }
2005
+ */
2006
+ "application/json": components["schemas"]["GetVersionResponse"];
2007
+ };
2008
+ };
2009
+ /** @description Unauthorized */
2010
+ 401: {
2011
+ headers: {
2012
+ [name: string]: unknown;
2013
+ };
2014
+ content: {
2015
+ /**
2016
+ * @example {
2017
+ * "error": "unauthorized",
2018
+ * "message": "Invalid API key",
2019
+ * "statusCode": 401
2020
+ * }
2021
+ */
2022
+ "application/json": components["schemas"]["ApiError"];
2023
+ };
2024
+ };
2025
+ /** @description Spec or version not found */
2026
+ 404: {
2027
+ headers: {
2028
+ [name: string]: unknown;
2029
+ };
2030
+ content: {
2031
+ /**
2032
+ * @example {
2033
+ * "error": "not_found",
2034
+ * "message": "Version 9.9.9 not found for spec \"payments-api\"",
2035
+ * "statusCode": 404
2036
+ * }
2037
+ */
2038
+ "application/json": components["schemas"]["ApiError"];
2039
+ };
2040
+ };
2041
+ /** @description Internal server error */
2042
+ 500: {
2043
+ headers: {
2044
+ [name: string]: unknown;
2045
+ };
2046
+ content: {
2047
+ /**
2048
+ * @example {
2049
+ * "error": "internal_error",
2050
+ * "message": "Internal server error",
2051
+ * "statusCode": 500
2052
+ * }
2053
+ */
2054
+ "application/json": components["schemas"]["ApiError"];
2055
+ };
2056
+ };
2057
+ };
2058
+ };
2059
+ getSpecJson: {
2060
+ parameters: {
2061
+ query?: never;
2062
+ header?: never;
2063
+ path: {
2064
+ /**
2065
+ * @description URL-friendly spec identifier
2066
+ * @example payments-api
2067
+ */
2068
+ name: components["parameters"]["specName"];
2069
+ };
2070
+ cookie?: never;
2071
+ };
2072
+ requestBody?: never;
2073
+ responses: {
2074
+ /** @description Spec document as JSON */
2075
+ 200: {
2076
+ headers: {
2077
+ [name: string]: unknown;
2078
+ };
2079
+ content: {
2080
+ "application/vnd.oai.openapi+json": Record<string, never>;
2081
+ "application/vnd.aai.asyncapi+json": Record<string, never>;
2082
+ };
2083
+ };
2084
+ /** @description Unauthorized */
2085
+ 401: {
2086
+ headers: {
2087
+ [name: string]: unknown;
2088
+ };
2089
+ content: {
2090
+ /**
2091
+ * @example {
2092
+ * "error": "unauthorized",
2093
+ * "message": "Invalid API key",
2094
+ * "statusCode": 401
2095
+ * }
2096
+ */
2097
+ "application/json": components["schemas"]["ApiError"];
2098
+ };
2099
+ };
2100
+ /** @description Spec not found */
2101
+ 404: {
2102
+ headers: {
2103
+ [name: string]: unknown;
2104
+ };
2105
+ content: {
2106
+ /**
2107
+ * @example {
2108
+ * "error": "not_found",
2109
+ * "message": "Spec \"payments-api\" not found",
2110
+ * "statusCode": 404
2111
+ * }
2112
+ */
2113
+ "application/json": components["schemas"]["ApiError"];
2114
+ };
2115
+ };
2116
+ /** @description Internal server error */
2117
+ 500: {
2118
+ headers: {
2119
+ [name: string]: unknown;
2120
+ };
2121
+ content: {
2122
+ /**
2123
+ * @example {
2124
+ * "error": "internal_error",
2125
+ * "message": "Internal server error",
2126
+ * "statusCode": 500
2127
+ * }
2128
+ */
2129
+ "application/json": components["schemas"]["ApiError"];
2130
+ };
2131
+ };
2132
+ };
2133
+ };
2134
+ getSpecYaml: {
2135
+ parameters: {
2136
+ query?: never;
2137
+ header?: never;
2138
+ path: {
2139
+ /**
2140
+ * @description URL-friendly spec identifier
2141
+ * @example payments-api
2142
+ */
2143
+ name: components["parameters"]["specName"];
2144
+ };
2145
+ cookie?: never;
2146
+ };
2147
+ requestBody?: never;
2148
+ responses: {
2149
+ /** @description Spec document as YAML */
2150
+ 200: {
2151
+ headers: {
2152
+ [name: string]: unknown;
2153
+ };
2154
+ content: {
2155
+ "application/vnd.oai.openapi+yaml": string;
2156
+ "application/vnd.aai.asyncapi+yaml": string;
2157
+ };
2158
+ };
2159
+ /** @description Unauthorized */
2160
+ 401: {
2161
+ headers: {
2162
+ [name: string]: unknown;
2163
+ };
2164
+ content: {
2165
+ /**
2166
+ * @example {
2167
+ * "error": "unauthorized",
2168
+ * "message": "Invalid API key",
2169
+ * "statusCode": 401
2170
+ * }
2171
+ */
2172
+ "application/json": components["schemas"]["ApiError"];
2173
+ };
2174
+ };
2175
+ /** @description Spec not found */
2176
+ 404: {
2177
+ headers: {
2178
+ [name: string]: unknown;
2179
+ };
2180
+ content: {
2181
+ /**
2182
+ * @example {
2183
+ * "error": "not_found",
2184
+ * "message": "Spec \"payments-api\" not found",
2185
+ * "statusCode": 404
2186
+ * }
2187
+ */
2188
+ "application/json": components["schemas"]["ApiError"];
2189
+ };
2190
+ };
2191
+ /** @description Internal server error */
2192
+ 500: {
2193
+ headers: {
2194
+ [name: string]: unknown;
2195
+ };
2196
+ content: {
2197
+ /**
2198
+ * @example {
2199
+ * "error": "internal_error",
2200
+ * "message": "Internal server error",
2201
+ * "statusCode": 500
2202
+ * }
2203
+ */
2204
+ "application/json": components["schemas"]["ApiError"];
2205
+ };
2206
+ };
2207
+ };
2208
+ };
2209
+ getVersionSpecJson: {
2210
+ parameters: {
2211
+ query?: never;
2212
+ header?: never;
2213
+ path: {
2214
+ /**
2215
+ * @description URL-friendly spec identifier
2216
+ * @example payments-api
2217
+ */
2218
+ name: components["parameters"]["specName"];
2219
+ /**
2220
+ * @description Semantic version
2221
+ * @example 1.2.0
2222
+ */
2223
+ semver: components["parameters"]["semver"];
2224
+ };
2225
+ cookie?: never;
2226
+ };
2227
+ requestBody?: never;
2228
+ responses: {
2229
+ /** @description Spec document as JSON */
2230
+ 200: {
2231
+ headers: {
2232
+ [name: string]: unknown;
2233
+ };
2234
+ content: {
2235
+ "application/vnd.oai.openapi+json": Record<string, never>;
2236
+ "application/vnd.aai.asyncapi+json": Record<string, never>;
2237
+ };
2238
+ };
2239
+ /** @description Unauthorized */
2240
+ 401: {
2241
+ headers: {
2242
+ [name: string]: unknown;
2243
+ };
2244
+ content: {
2245
+ /**
2246
+ * @example {
2247
+ * "error": "unauthorized",
2248
+ * "message": "Invalid API key",
2249
+ * "statusCode": 401
2250
+ * }
2251
+ */
2252
+ "application/json": components["schemas"]["ApiError"];
2253
+ };
2254
+ };
2255
+ /** @description Spec or version not found */
2256
+ 404: {
2257
+ headers: {
2258
+ [name: string]: unknown;
2259
+ };
2260
+ content: {
2261
+ /**
2262
+ * @example {
2263
+ * "error": "not_found",
2264
+ * "message": "Version 9.9.9 not found for spec \"payments-api\"",
2265
+ * "statusCode": 404
2266
+ * }
2267
+ */
2268
+ "application/json": components["schemas"]["ApiError"];
2269
+ };
2270
+ };
2271
+ /** @description Internal server error */
2272
+ 500: {
2273
+ headers: {
2274
+ [name: string]: unknown;
2275
+ };
2276
+ content: {
2277
+ /**
2278
+ * @example {
2279
+ * "error": "internal_error",
2280
+ * "message": "Internal server error",
2281
+ * "statusCode": 500
2282
+ * }
2283
+ */
2284
+ "application/json": components["schemas"]["ApiError"];
2285
+ };
2286
+ };
2287
+ };
2288
+ };
2289
+ getVersionSpecYaml: {
2290
+ parameters: {
2291
+ query?: never;
2292
+ header?: never;
2293
+ path: {
2294
+ /**
2295
+ * @description URL-friendly spec identifier
2296
+ * @example payments-api
2297
+ */
2298
+ name: components["parameters"]["specName"];
2299
+ /**
2300
+ * @description Semantic version
2301
+ * @example 1.2.0
2302
+ */
2303
+ semver: components["parameters"]["semver"];
2304
+ };
2305
+ cookie?: never;
2306
+ };
2307
+ requestBody?: never;
2308
+ responses: {
2309
+ /** @description Spec document as YAML */
2310
+ 200: {
2311
+ headers: {
2312
+ [name: string]: unknown;
2313
+ };
2314
+ content: {
2315
+ "application/vnd.oai.openapi+yaml": string;
2316
+ "application/vnd.aai.asyncapi+yaml": string;
2317
+ };
2318
+ };
2319
+ /** @description Unauthorized */
2320
+ 401: {
2321
+ headers: {
2322
+ [name: string]: unknown;
2323
+ };
2324
+ content: {
2325
+ /**
2326
+ * @example {
2327
+ * "error": "unauthorized",
2328
+ * "message": "Invalid API key",
2329
+ * "statusCode": 401
2330
+ * }
2331
+ */
2332
+ "application/json": components["schemas"]["ApiError"];
2333
+ };
2334
+ };
2335
+ /** @description Spec or version not found */
2336
+ 404: {
2337
+ headers: {
2338
+ [name: string]: unknown;
2339
+ };
2340
+ content: {
2341
+ /**
2342
+ * @example {
2343
+ * "error": "not_found",
2344
+ * "message": "Version 9.9.9 not found for spec \"payments-api\"",
2345
+ * "statusCode": 404
2346
+ * }
2347
+ */
2348
+ "application/json": components["schemas"]["ApiError"];
2349
+ };
2350
+ };
2351
+ /** @description Internal server error */
2352
+ 500: {
2353
+ headers: {
2354
+ [name: string]: unknown;
2355
+ };
2356
+ content: {
2357
+ /**
2358
+ * @example {
2359
+ * "error": "internal_error",
2360
+ * "message": "Internal server error",
2361
+ * "statusCode": 500
2362
+ * }
2363
+ */
2364
+ "application/json": components["schemas"]["ApiError"];
2365
+ };
2366
+ };
2367
+ };
2368
+ };
2369
+ getCompatReport: {
2370
+ parameters: {
2371
+ query?: never;
2372
+ header?: never;
2373
+ path: {
2374
+ /**
2375
+ * @description URL-friendly spec identifier
2376
+ * @example payments-api
2377
+ */
2378
+ name: components["parameters"]["specName"];
2379
+ /**
2380
+ * @description Semantic version
2381
+ * @example 1.2.0
2382
+ */
2383
+ semver: components["parameters"]["semver"];
2384
+ };
2385
+ cookie?: never;
2386
+ };
2387
+ requestBody?: never;
2388
+ responses: {
2389
+ /** @description Compatibility report */
2390
+ 200: {
2391
+ headers: {
2392
+ [name: string]: unknown;
2393
+ };
2394
+ content: {
2395
+ /**
2396
+ * @example {
2397
+ * "data": {
2398
+ * "previousVersion": "1.1.0",
2399
+ * "classification": "minor",
2400
+ * "suggestedVersion": "1.2.0",
2401
+ * "breakingChanges": [],
2402
+ * "safeChanges": [
2403
+ * {
2404
+ * "id": "chg-1",
2405
+ * "rule": "endpoint-added",
2406
+ * "description": "Endpoint GET /payments/{id}/refunds added",
2407
+ * "path": "/payments/{id}/refunds/GET"
2408
+ * }
2409
+ * ]
2410
+ * }
2411
+ * }
2412
+ */
2413
+ "application/json": components["schemas"]["GetCompatReportResponse"];
2414
+ };
2415
+ };
2416
+ /** @description Unauthorized */
2417
+ 401: {
2418
+ headers: {
2419
+ [name: string]: unknown;
2420
+ };
2421
+ content: {
2422
+ /**
2423
+ * @example {
2424
+ * "error": "unauthorized",
2425
+ * "message": "Invalid API key",
2426
+ * "statusCode": 401
2427
+ * }
2428
+ */
2429
+ "application/json": components["schemas"]["ApiError"];
2430
+ };
2431
+ };
2432
+ /** @description Spec, version, or compat report not found */
2433
+ 404: {
2434
+ headers: {
2435
+ [name: string]: unknown;
2436
+ };
2437
+ content: {
2438
+ /**
2439
+ * @example {
2440
+ * "error": "not_found",
2441
+ * "message": "Compat report not found for payments-api@1.0.0",
2442
+ * "statusCode": 404
2443
+ * }
2444
+ */
2445
+ "application/json": components["schemas"]["ApiError"];
2446
+ };
2447
+ };
2448
+ /** @description Internal server error */
2449
+ 500: {
2450
+ headers: {
2451
+ [name: string]: unknown;
2452
+ };
2453
+ content: {
2454
+ /**
2455
+ * @example {
2456
+ * "error": "internal_error",
2457
+ * "message": "Internal server error",
2458
+ * "statusCode": 500
2459
+ * }
2460
+ */
2461
+ "application/json": components["schemas"]["ApiError"];
2462
+ };
2463
+ };
2464
+ };
2465
+ };
2466
+ compareVersions: {
2467
+ parameters: {
2468
+ query: {
2469
+ /**
2470
+ * @description Starting version (inclusive). If newer than `to`, the order is normalized.
2471
+ * @example 1.0.0
2472
+ */
2473
+ from: string;
2474
+ /**
2475
+ * @description Ending version (inclusive). If older than `from`, the order is normalized.
2476
+ * @example 1.3.0
2477
+ */
2478
+ to: string;
2479
+ };
2480
+ header?: never;
2481
+ path: {
2482
+ /**
2483
+ * @description URL-friendly spec identifier
2484
+ * @example payments-api
2485
+ */
2486
+ name: components["parameters"]["specName"];
2487
+ };
2488
+ cookie?: never;
2489
+ };
2490
+ requestBody?: never;
2491
+ responses: {
2492
+ /** @description Incremental comparison between versions */
2493
+ 200: {
2494
+ headers: {
2495
+ [name: string]: unknown;
2496
+ };
2497
+ content: {
2498
+ /**
2499
+ * @example {
2500
+ * "data": {
2501
+ * "from": "1.0.0",
2502
+ * "to": "1.3.0",
2503
+ * "steps": [
2504
+ * {
2505
+ * "version": "1.1.0",
2506
+ * "previousVersion": "1.0.0",
2507
+ * "classification": "minor",
2508
+ * "breakingChanges": [],
2509
+ * "safeChanges": [
2510
+ * {
2511
+ * "id": "chg-1",
2512
+ * "rule": "endpoint-added",
2513
+ * "description": "Endpoint GET /payments/{id}/refunds added",
2514
+ * "path": "/payments/{id}/refunds/GET",
2515
+ * "category": "structural"
2516
+ * }
2517
+ * ]
2518
+ * },
2519
+ * {
2520
+ * "version": "1.2.0",
2521
+ * "previousVersion": "1.1.0",
2522
+ * "classification": "patch",
2523
+ * "breakingChanges": [],
2524
+ * "safeChanges": []
2525
+ * },
2526
+ * {
2527
+ * "version": "1.3.0",
2528
+ * "previousVersion": "1.2.0",
2529
+ * "classification": "major",
2530
+ * "breakingChanges": [
2531
+ * {
2532
+ * "id": "chg-2",
2533
+ * "rule": "response-property-removed",
2534
+ * "description": "Response property 'userId' was removed from GET /users/{id}",
2535
+ * "path": "/users/{id}/GET/response/200/userId",
2536
+ * "category": "structural"
2537
+ * }
2538
+ * ],
2539
+ * "safeChanges": []
2540
+ * }
2541
+ * ]
2542
+ * }
2543
+ * }
2544
+ */
2545
+ "application/json": components["schemas"]["CompareVersionsResponse"];
2546
+ };
2547
+ };
2548
+ /** @description Unauthorized */
2549
+ 401: {
2550
+ headers: {
2551
+ [name: string]: unknown;
2552
+ };
2553
+ content: {
2554
+ /**
2555
+ * @example {
2556
+ * "error": "unauthorized",
2557
+ * "message": "Invalid API key",
2558
+ * "statusCode": 401
2559
+ * }
2560
+ */
2561
+ "application/json": components["schemas"]["ApiError"];
2562
+ };
2563
+ };
2564
+ /** @description Spec or version not found */
2565
+ 404: {
2566
+ headers: {
2567
+ [name: string]: unknown;
2568
+ };
2569
+ content: {
2570
+ /**
2571
+ * @example {
2572
+ * "error": "not_found",
2573
+ * "message": "Version 1.3.0 not found for spec \"payments-api\"",
2574
+ * "statusCode": 404
2575
+ * }
2576
+ */
2577
+ "application/json": components["schemas"]["ApiError"];
2578
+ };
2579
+ };
2580
+ /** @description Internal server error */
2581
+ 500: {
2582
+ headers: {
2583
+ [name: string]: unknown;
2584
+ };
2585
+ content: {
2586
+ /**
2587
+ * @example {
2588
+ * "error": "internal_error",
2589
+ * "message": "Internal server error",
2590
+ * "statusCode": 500
2591
+ * }
2592
+ */
2593
+ "application/json": components["schemas"]["ApiError"];
2594
+ };
2595
+ };
2596
+ };
2597
+ };
2598
+ listGatewayConfigs: {
2599
+ parameters: {
2600
+ query?: never;
2601
+ header?: never;
2602
+ path?: never;
2603
+ cookie?: never;
2604
+ };
2605
+ requestBody?: never;
2606
+ responses: {
2607
+ /** @description List of gateway configurations */
2608
+ 200: {
2609
+ headers: {
2610
+ [name: string]: unknown;
2611
+ };
2612
+ content: {
2613
+ /**
2614
+ * @example {
2615
+ * "data": [
2616
+ * {
2617
+ * "id": "cfg-uuid-1",
2618
+ * "name": "payments-api-gateway",
2619
+ * "provider": "kong",
2620
+ * "specName": "payments-api",
2621
+ * "specSemver": "1.2.0",
2622
+ * "createdAt": "2026-04-25T10:30:00.000Z",
2623
+ * "updatedAt": "2026-06-07T14:00:00.000Z"
2624
+ * }
2625
+ * ]
2626
+ * }
2627
+ */
2628
+ "application/json": components["schemas"]["ListGatewayConfigsResponse"];
2629
+ };
2630
+ };
2631
+ /** @description Unauthorized */
2632
+ 401: {
2633
+ headers: {
2634
+ [name: string]: unknown;
2635
+ };
2636
+ content: {
2637
+ /**
2638
+ * @example {
2639
+ * "error": "unauthorized",
2640
+ * "message": "Invalid API key",
2641
+ * "statusCode": 401
2642
+ * }
2643
+ */
2644
+ "application/json": components["schemas"]["ApiError"];
2645
+ };
2646
+ };
2647
+ /** @description Internal server error */
2648
+ 500: {
2649
+ headers: {
2650
+ [name: string]: unknown;
2651
+ };
2652
+ content: {
2653
+ /**
2654
+ * @example {
2655
+ * "error": "internal_error",
2656
+ * "message": "Internal server error",
2657
+ * "statusCode": 500
2658
+ * }
2659
+ */
2660
+ "application/json": components["schemas"]["ApiError"];
2661
+ };
2662
+ };
2663
+ };
2664
+ };
2665
+ pushGatewayConfig: {
2666
+ parameters: {
2667
+ query?: never;
2668
+ header?: never;
2669
+ path?: never;
2670
+ cookie?: never;
2671
+ };
2672
+ requestBody: {
2673
+ content: {
2674
+ /**
2675
+ * @example {
2676
+ * "name": "payments-api-gateway",
2677
+ * "provider": "kong",
2678
+ * "specName": "payments-api",
2679
+ * "specSemver": "1.2.0",
2680
+ * "routes": [
2681
+ * {
2682
+ * "path": "/payments",
2683
+ * "methods": [
2684
+ * "GET",
2685
+ * "POST"
2686
+ * ]
2687
+ * },
2688
+ * {
2689
+ * "path": "/payments/{id}",
2690
+ * "methods": [
2691
+ * "GET",
2692
+ * "PUT",
2693
+ * "DELETE"
2694
+ * ]
2695
+ * }
2696
+ * ],
2697
+ * "environments": {
2698
+ * "staging": {
2699
+ * "kongAddr": "http://kong-staging:8001",
2700
+ * "upstream": "http://payments-staging:8080",
2701
+ * "plugins": [
2702
+ * {
2703
+ * "name": "rate-limiting",
2704
+ * "config": {
2705
+ * "minute": 1000
2706
+ * },
2707
+ * "order": 1
2708
+ * },
2709
+ * {
2710
+ * "name": "jwt",
2711
+ * "config": {
2712
+ * "issuer": "https://auth.example.com"
2713
+ * },
2714
+ * "order": 2
2715
+ * }
2716
+ * ]
2717
+ * }
2718
+ * },
2719
+ * "callerIdentification": {
2720
+ * "strategy": "first-match",
2721
+ * "rules": [
2722
+ * {
2723
+ * "source": "header:x-consumer-id",
2724
+ * "confidence": "high"
2725
+ * }
2726
+ * ]
2727
+ * },
2728
+ * "content": "apiVersion: v1\nkind: GatewayConfig",
2729
+ * "pushedBy": "github-actions[bot]"
2730
+ * }
2731
+ */
2732
+ "application/json": components["schemas"]["PushGatewayConfigRequest"];
2733
+ };
2734
+ };
2735
+ responses: {
2736
+ /** @description Gateway configuration version registered successfully */
2737
+ 201: {
2738
+ headers: {
2739
+ [name: string]: unknown;
2740
+ };
2741
+ content: {
2742
+ /**
2743
+ * @example {
2744
+ * "data": {
2745
+ * "config": {
2746
+ * "id": "cfg-uuid-1",
2747
+ * "name": "payments-api-gateway",
2748
+ * "provider": "kong",
2749
+ * "specName": "payments-api",
2750
+ * "specSemver": "1.2.0",
2751
+ * "createdAt": "2026-04-25T10:30:00.000Z",
2752
+ * "updatedAt": "2026-06-07T14:00:00.000Z"
2753
+ * },
2754
+ * "version": {
2755
+ * "id": "ver-uuid-1",
2756
+ * "gatewayConfigId": "cfg-uuid-1",
2757
+ * "routes": [
2758
+ * {
2759
+ * "path": "/payments",
2760
+ * "methods": [
2761
+ * "GET",
2762
+ * "POST"
2763
+ * ]
2764
+ * }
2765
+ * ],
2766
+ * "environments": [
2767
+ * {
2768
+ * "name": "staging",
2769
+ * "kongAddr": "http://kong-staging:8001",
2770
+ * "upstream": "http://payments-staging:8080",
2771
+ * "plugins": [
2772
+ * {
2773
+ * "name": "rate-limiting",
2774
+ * "config": {
2775
+ * "minute": 1000
2776
+ * },
2777
+ * "order": 1
2778
+ * }
2779
+ * ]
2780
+ * }
2781
+ * ],
2782
+ * "callerIdentification": {
2783
+ * "strategy": "first-match",
2784
+ * "rules": [
2785
+ * {
2786
+ * "source": "header:x-consumer-id",
2787
+ * "confidence": "high"
2788
+ * }
2789
+ * ]
2790
+ * },
2791
+ * "content": "apiVersion: v1\nkind: GatewayConfig",
2792
+ * "checksum": "sha256-abc123",
2793
+ * "pushedBy": "github-actions[bot]",
2794
+ * "createdAt": "2026-06-07T14:00:00.000Z"
2795
+ * }
2796
+ * }
2797
+ * }
2798
+ */
2799
+ "application/json": components["schemas"]["PushGatewayConfigResponse"];
2800
+ };
2801
+ };
2802
+ /** @description Missing required fields */
2803
+ 400: {
2804
+ headers: {
2805
+ [name: string]: unknown;
2806
+ };
2807
+ content: {
2808
+ /**
2809
+ * @example {
2810
+ * "error": "bad_request",
2811
+ * "message": "Missing required field: name",
2812
+ * "statusCode": 400
2813
+ * }
2814
+ */
2815
+ "application/json": components["schemas"]["ApiError"];
2816
+ };
2817
+ };
2818
+ /** @description Unauthorized */
2819
+ 401: {
2820
+ headers: {
2821
+ [name: string]: unknown;
2822
+ };
2823
+ content: {
2824
+ /**
2825
+ * @example {
2826
+ * "error": "unauthorized",
2827
+ * "message": "Invalid API key",
2828
+ * "statusCode": 401
2829
+ * }
2830
+ */
2831
+ "application/json": components["schemas"]["ApiError"];
2832
+ };
2833
+ };
2834
+ /** @description Gateway config name already exists with different spec */
2835
+ 409: {
2836
+ headers: {
2837
+ [name: string]: unknown;
2838
+ };
2839
+ content: {
2840
+ /**
2841
+ * @example {
2842
+ * "error": "name_exists",
2843
+ * "message": "Gateway config name 'payments-api-gateway' already exists with a different spec",
2844
+ * "statusCode": 409
2845
+ * }
2846
+ */
2847
+ "application/json": components["schemas"]["ApiError"];
2848
+ };
2849
+ };
2850
+ /** @description Validation error (unsupported provider, spec not found, route not found, or no environments) */
2851
+ 422: {
2852
+ headers: {
2853
+ [name: string]: unknown;
2854
+ };
2855
+ content: {
2856
+ /**
2857
+ * @example {
2858
+ * "error": "unsupported_provider",
2859
+ * "message": "Unsupported provider 'nginx'",
2860
+ * "statusCode": 422
2861
+ * }
2862
+ */
2863
+ "application/json": components["schemas"]["ApiError"];
2864
+ };
2865
+ };
2866
+ /** @description Internal server error */
2867
+ 500: {
2868
+ headers: {
2869
+ [name: string]: unknown;
2870
+ };
2871
+ content: {
2872
+ /**
2873
+ * @example {
2874
+ * "error": "internal_error",
2875
+ * "message": "Internal server error",
2876
+ * "statusCode": 500
2877
+ * }
2878
+ */
2879
+ "application/json": components["schemas"]["ApiError"];
2880
+ };
2881
+ };
2882
+ };
2883
+ };
2884
+ getGatewayConfig: {
2885
+ parameters: {
2886
+ query?: never;
2887
+ header?: never;
2888
+ path: {
2889
+ /**
2890
+ * @description URL-friendly gateway config identifier
2891
+ * @example payments-api-gateway
2892
+ */
2893
+ name: components["parameters"]["gatewayConfigName"];
2894
+ };
2895
+ cookie?: never;
2896
+ };
2897
+ requestBody?: never;
2898
+ responses: {
2899
+ /** @description Gateway configuration metadata */
2900
+ 200: {
2901
+ headers: {
2902
+ [name: string]: unknown;
2903
+ };
2904
+ content: {
2905
+ /**
2906
+ * @example {
2907
+ * "data": {
2908
+ * "id": "cfg-uuid-1",
2909
+ * "name": "payments-api-gateway",
2910
+ * "provider": "kong",
2911
+ * "specName": "payments-api",
2912
+ * "specSemver": "1.2.0",
2913
+ * "createdAt": "2026-04-25T10:30:00.000Z",
2914
+ * "updatedAt": "2026-06-07T14:00:00.000Z"
2915
+ * }
2916
+ * }
2917
+ */
2918
+ "application/json": components["schemas"]["GetGatewayConfigResponse"];
2919
+ };
2920
+ };
2921
+ /** @description Unauthorized */
2922
+ 401: {
2923
+ headers: {
2924
+ [name: string]: unknown;
2925
+ };
2926
+ content: {
2927
+ /**
2928
+ * @example {
2929
+ * "error": "unauthorized",
2930
+ * "message": "Invalid API key",
2931
+ * "statusCode": 401
2932
+ * }
2933
+ */
2934
+ "application/json": components["schemas"]["ApiError"];
2935
+ };
2936
+ };
2937
+ /** @description Gateway config not found */
2938
+ 404: {
2939
+ headers: {
2940
+ [name: string]: unknown;
2941
+ };
2942
+ content: {
2943
+ /**
2944
+ * @example {
2945
+ * "error": "not_found",
2946
+ * "message": "Gateway config \"payments-api-gateway\" not found",
2947
+ * "statusCode": 404
2948
+ * }
2949
+ */
2950
+ "application/json": components["schemas"]["ApiError"];
2951
+ };
2952
+ };
2953
+ /** @description Internal server error */
2954
+ 500: {
2955
+ headers: {
2956
+ [name: string]: unknown;
2957
+ };
2958
+ content: {
2959
+ /**
2960
+ * @example {
2961
+ * "error": "internal_error",
2962
+ * "message": "Internal server error",
2963
+ * "statusCode": 500
2964
+ * }
2965
+ */
2966
+ "application/json": components["schemas"]["ApiError"];
2967
+ };
2968
+ };
2969
+ };
2970
+ };
2971
+ listGatewayConfigVersions: {
2972
+ parameters: {
2973
+ query?: never;
2974
+ header?: never;
2975
+ path: {
2976
+ /**
2977
+ * @description URL-friendly gateway config identifier
2978
+ * @example payments-api-gateway
2979
+ */
2980
+ name: components["parameters"]["gatewayConfigName"];
2981
+ };
2982
+ cookie?: never;
2983
+ };
2984
+ requestBody?: never;
2985
+ responses: {
2986
+ /** @description List of gateway config versions */
2987
+ 200: {
2988
+ headers: {
2989
+ [name: string]: unknown;
2990
+ };
2991
+ content: {
2992
+ /**
2993
+ * @example {
2994
+ * "data": [
2995
+ * {
2996
+ * "id": "ver-uuid-1",
2997
+ * "gatewayConfigId": "cfg-uuid-1",
2998
+ * "routes": [
2999
+ * {
3000
+ * "path": "/payments",
3001
+ * "methods": [
3002
+ * "GET",
3003
+ * "POST"
3004
+ * ]
3005
+ * }
3006
+ * ],
3007
+ * "environments": [
3008
+ * {
3009
+ * "name": "staging",
3010
+ * "kongAddr": "http://kong-staging:8001",
3011
+ * "upstream": "http://payments-staging:8080",
3012
+ * "plugins": [
3013
+ * {
3014
+ * "name": "rate-limiting",
3015
+ * "config": {
3016
+ * "minute": 1000
3017
+ * },
3018
+ * "order": 1
3019
+ * }
3020
+ * ]
3021
+ * }
3022
+ * ],
3023
+ * "callerIdentification": {
3024
+ * "strategy": "first-match",
3025
+ * "rules": [
3026
+ * {
3027
+ * "source": "header:x-consumer-id",
3028
+ * "confidence": "high"
3029
+ * }
3030
+ * ]
3031
+ * },
3032
+ * "checksum": "sha256-abc123",
3033
+ * "pushedBy": "github-actions[bot]",
3034
+ * "createdAt": "2026-06-07T14:00:00.000Z"
3035
+ * }
3036
+ * ]
3037
+ * }
3038
+ */
3039
+ "application/json": components["schemas"]["ListGatewayConfigVersionsResponse"];
3040
+ };
3041
+ };
3042
+ /** @description Unauthorized */
3043
+ 401: {
3044
+ headers: {
3045
+ [name: string]: unknown;
3046
+ };
3047
+ content: {
3048
+ /**
3049
+ * @example {
3050
+ * "error": "unauthorized",
3051
+ * "message": "Invalid API key",
3052
+ * "statusCode": 401
3053
+ * }
3054
+ */
3055
+ "application/json": components["schemas"]["ApiError"];
3056
+ };
3057
+ };
3058
+ /** @description Gateway config not found */
3059
+ 404: {
3060
+ headers: {
3061
+ [name: string]: unknown;
3062
+ };
3063
+ content: {
3064
+ /**
3065
+ * @example {
3066
+ * "error": "not_found",
3067
+ * "message": "Gateway config \"payments-api-gateway\" not found",
3068
+ * "statusCode": 404
3069
+ * }
3070
+ */
3071
+ "application/json": components["schemas"]["ApiError"];
3072
+ };
3073
+ };
3074
+ /** @description Internal server error */
3075
+ 500: {
3076
+ headers: {
3077
+ [name: string]: unknown;
3078
+ };
3079
+ content: {
3080
+ /**
3081
+ * @example {
3082
+ * "error": "internal_error",
3083
+ * "message": "Internal server error",
3084
+ * "statusCode": 500
3085
+ * }
3086
+ */
3087
+ "application/json": components["schemas"]["ApiError"];
3088
+ };
3089
+ };
3090
+ };
3091
+ };
3092
+ getGatewayConfigVersion: {
3093
+ parameters: {
3094
+ query?: never;
3095
+ header?: never;
3096
+ path: {
3097
+ /**
3098
+ * @description URL-friendly gateway config identifier
3099
+ * @example payments-api-gateway
3100
+ */
3101
+ name: components["parameters"]["gatewayConfigName"];
3102
+ /**
3103
+ * @description Gateway config version UUID
3104
+ * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
3105
+ */
3106
+ versionId: components["parameters"]["versionId"];
3107
+ };
3108
+ cookie?: never;
3109
+ };
3110
+ requestBody?: never;
3111
+ responses: {
3112
+ /** @description Gateway configuration version detail */
3113
+ 200: {
3114
+ headers: {
3115
+ [name: string]: unknown;
3116
+ };
3117
+ content: {
3118
+ /**
3119
+ * @example {
3120
+ * "data": {
3121
+ * "id": "ver-uuid-1",
3122
+ * "gatewayConfigId": "cfg-uuid-1",
3123
+ * "routes": [
3124
+ * {
3125
+ * "path": "/payments",
3126
+ * "methods": [
3127
+ * "GET",
3128
+ * "POST"
3129
+ * ]
3130
+ * }
3131
+ * ],
3132
+ * "environments": [
3133
+ * {
3134
+ * "name": "staging",
3135
+ * "kongAddr": "http://kong-staging:8001",
3136
+ * "upstream": "http://payments-staging:8080",
3137
+ * "plugins": [
3138
+ * {
3139
+ * "name": "rate-limiting",
3140
+ * "config": {
3141
+ * "minute": 1000
3142
+ * },
3143
+ * "order": 1
3144
+ * }
3145
+ * ]
3146
+ * }
3147
+ * ],
3148
+ * "callerIdentification": {
3149
+ * "strategy": "first-match",
3150
+ * "rules": [
3151
+ * {
3152
+ * "source": "header:x-consumer-id",
3153
+ * "confidence": "high"
3154
+ * }
3155
+ * ]
3156
+ * },
3157
+ * "content": "apiVersion: v1\nkind: GatewayConfig",
3158
+ * "checksum": "sha256-abc123",
3159
+ * "pushedBy": "github-actions[bot]",
3160
+ * "createdAt": "2026-06-07T14:00:00.000Z"
3161
+ * }
3162
+ * }
3163
+ */
3164
+ "application/json": components["schemas"]["GetGatewayConfigVersionResponse"];
3165
+ };
3166
+ };
3167
+ /** @description Unauthorized */
3168
+ 401: {
3169
+ headers: {
3170
+ [name: string]: unknown;
3171
+ };
3172
+ content: {
3173
+ /**
3174
+ * @example {
3175
+ * "error": "unauthorized",
3176
+ * "message": "Invalid API key",
3177
+ * "statusCode": 401
3178
+ * }
3179
+ */
3180
+ "application/json": components["schemas"]["ApiError"];
3181
+ };
3182
+ };
3183
+ /** @description Gateway config or version not found */
3184
+ 404: {
3185
+ headers: {
3186
+ [name: string]: unknown;
3187
+ };
3188
+ content: {
3189
+ /**
3190
+ * @example {
3191
+ * "error": "not_found",
3192
+ * "message": "Version ver-uuid-99 not found for gateway config \"payments-api-gateway\"",
3193
+ * "statusCode": 404
3194
+ * }
3195
+ */
3196
+ "application/json": components["schemas"]["ApiError"];
3197
+ };
3198
+ };
3199
+ /** @description Internal server error */
3200
+ 500: {
3201
+ headers: {
3202
+ [name: string]: unknown;
3203
+ };
3204
+ content: {
3205
+ /**
3206
+ * @example {
3207
+ * "error": "internal_error",
3208
+ * "message": "Internal server error",
3209
+ * "statusCode": 500
3210
+ * }
3211
+ */
3212
+ "application/json": components["schemas"]["ApiError"];
3213
+ };
3214
+ };
3215
+ };
3216
+ };
3217
+ ingestGatewayLog: {
3218
+ parameters: {
3219
+ query?: never;
3220
+ header?: never;
3221
+ path: {
3222
+ /**
3223
+ * @description Gateway provider (e.g., kong)
3224
+ * @example kong
3225
+ */
3226
+ provider: components["parameters"]["provider"];
3227
+ /**
3228
+ * @description Deployment environment (e.g., staging, production)
3229
+ * @example staging
3230
+ */
3231
+ environment: components["parameters"]["environment"];
3232
+ };
3233
+ cookie?: never;
3234
+ };
3235
+ requestBody: {
3236
+ content: {
3237
+ /**
3238
+ * @example {
3239
+ * "service": {
3240
+ * "name": "payments-api-gateway"
3241
+ * },
3242
+ * "request": {
3243
+ * "method": "GET",
3244
+ * "uri": "/payments",
3245
+ * "headers": {
3246
+ * "x-consumer-id": "consumer-123"
3247
+ * }
3248
+ * },
3249
+ * "response": {
3250
+ * "status": 200
3251
+ * },
3252
+ * "latencies": {
3253
+ * "request": 42
3254
+ * }
3255
+ * }
3256
+ */
3257
+ "application/json": Record<string, never>;
3258
+ };
3259
+ };
3260
+ responses: {
3261
+ /** @description Log ingested successfully */
3262
+ 201: {
3263
+ headers: {
3264
+ [name: string]: unknown;
3265
+ };
3266
+ content: {
3267
+ /**
3268
+ * @example {
3269
+ * "status": "ok"
3270
+ * }
3271
+ */
3272
+ "application/json": {
3273
+ /** @example ok */
3274
+ status?: string;
3275
+ };
3276
+ };
3277
+ };
3278
+ /** @description Invalid log payload */
3279
+ 400: {
3280
+ headers: {
3281
+ [name: string]: unknown;
3282
+ };
3283
+ content: {
3284
+ /**
3285
+ * @example {
3286
+ * "error": "bad_request",
3287
+ * "message": "Missing service.name in gateway log payload",
3288
+ * "statusCode": 400
3289
+ * }
3290
+ */
3291
+ "application/json": components["schemas"]["ApiError"];
3292
+ };
3293
+ };
3294
+ /** @description Unauthorized */
3295
+ 401: {
3296
+ headers: {
3297
+ [name: string]: unknown;
3298
+ };
3299
+ content: {
3300
+ /**
3301
+ * @example {
3302
+ * "error": "unauthorized",
3303
+ * "message": "Invalid API key",
3304
+ * "statusCode": 401
3305
+ * }
3306
+ */
3307
+ "application/json": components["schemas"]["ApiError"];
3308
+ };
3309
+ };
3310
+ /** @description Internal server error */
3311
+ 500: {
3312
+ headers: {
3313
+ [name: string]: unknown;
3314
+ };
3315
+ content: {
3316
+ /**
3317
+ * @example {
3318
+ * "error": "internal_error",
3319
+ * "message": "Internal server error",
3320
+ * "statusCode": 500
3321
+ * }
3322
+ */
3323
+ "application/json": components["schemas"]["ApiError"];
3324
+ };
3325
+ };
3326
+ };
3327
+ };
3328
+ listGatewayLogs: {
3329
+ parameters: {
3330
+ query?: {
3331
+ /** @description Filter by gateway config name */
3332
+ gatewayConfig?: string;
3333
+ /** @description Filter by environment */
3334
+ environment?: string;
3335
+ /** @description Filter by request path */
3336
+ path?: string;
3337
+ /** @description Filter by HTTP method */
3338
+ method?: string;
3339
+ /** @description Filter by response status code */
3340
+ status?: number;
3341
+ /** @description Start of time range (ISO 8601) */
3342
+ from?: Date;
3343
+ /** @description End of time range (ISO 8601) */
3344
+ to?: Date;
3345
+ /** @description Maximum number of logs to return */
3346
+ limit?: number;
3347
+ /** @description Number of logs to skip */
3348
+ offset?: number;
3349
+ };
3350
+ header?: never;
3351
+ path?: never;
3352
+ cookie?: never;
3353
+ };
3354
+ requestBody?: never;
3355
+ responses: {
3356
+ /** @description Paginated list of gateway logs */
3357
+ 200: {
3358
+ headers: {
3359
+ [name: string]: unknown;
3360
+ };
3361
+ content: {
3362
+ /**
3363
+ * @example {
3364
+ * "data": [
3365
+ * {
3366
+ * "id": "log-uuid-1",
3367
+ * "provider": "kong",
3368
+ * "gatewayConfigName": "payments-api-gateway",
3369
+ * "environment": "staging",
3370
+ * "method": "GET",
3371
+ * "path": "/payments",
3372
+ * "routePath": "/payments",
3373
+ * "status": 200,
3374
+ * "callerId": "consumer-123",
3375
+ * "callerSource": "header:x-consumer-id",
3376
+ * "callerConfidence": "high",
3377
+ * "occurredAt": "2026-06-07T14:00:00.000Z",
3378
+ * "createdAt": "2026-06-07T14:00:01.000Z"
3379
+ * }
3380
+ * ],
3381
+ * "pagination": {
3382
+ * "hasMore": false,
3383
+ * "limit": 50,
3384
+ * "offset": 0,
3385
+ * "total": 1
3386
+ * }
3387
+ * }
3388
+ */
3389
+ "application/json": components["schemas"]["ListGatewayLogsResponse"];
3390
+ };
3391
+ };
3392
+ /** @description Unauthorized */
3393
+ 401: {
3394
+ headers: {
3395
+ [name: string]: unknown;
3396
+ };
3397
+ content: {
3398
+ /**
3399
+ * @example {
3400
+ * "error": "unauthorized",
3401
+ * "message": "Invalid API key",
3402
+ * "statusCode": 401
3403
+ * }
3404
+ */
3405
+ "application/json": components["schemas"]["ApiError"];
3406
+ };
3407
+ };
3408
+ /** @description Internal server error */
3409
+ 500: {
3410
+ headers: {
3411
+ [name: string]: unknown;
3412
+ };
3413
+ content: {
3414
+ /**
3415
+ * @example {
3416
+ * "error": "internal_error",
3417
+ * "message": "Internal server error",
3418
+ * "statusCode": 500
3419
+ * }
3420
+ */
3421
+ "application/json": components["schemas"]["ApiError"];
3422
+ };
3423
+ };
3424
+ };
3425
+ };
3426
+ getGatewayLogStats: {
3427
+ parameters: {
3428
+ query?: {
3429
+ /** @description Filter by gateway config name */
3430
+ gatewayConfig?: string;
3431
+ /** @description Filter by environment */
3432
+ environment?: string;
3433
+ /** @description Start of time range (ISO 8601) */
3434
+ from?: Date;
3435
+ /** @description End of time range (ISO 8601) */
3436
+ to?: Date;
3437
+ };
3438
+ header?: never;
3439
+ path?: never;
3440
+ cookie?: never;
3441
+ };
3442
+ requestBody?: never;
3443
+ responses: {
3444
+ /** @description Usage statistics grouped by endpoint */
3445
+ 200: {
3446
+ headers: {
3447
+ [name: string]: unknown;
3448
+ };
3449
+ content: {
3450
+ /**
3451
+ * @example {
3452
+ * "data": [
3453
+ * {
3454
+ * "gatewayConfigName": "payments-api-gateway",
3455
+ * "environment": "staging",
3456
+ * "method": "GET",
3457
+ * "routePath": "/payments",
3458
+ * "lastSeenAt": "2026-06-07T14:00:00.000Z",
3459
+ * "totalCalls": 15042,
3460
+ * "uniqueCallerIds": 128
3461
+ * }
3462
+ * ]
3463
+ * }
3464
+ */
3465
+ "application/json": components["schemas"]["GetGatewayLogStatsResponse"];
3466
+ };
3467
+ };
3468
+ /** @description Unauthorized */
3469
+ 401: {
3470
+ headers: {
3471
+ [name: string]: unknown;
3472
+ };
3473
+ content: {
3474
+ /**
3475
+ * @example {
3476
+ * "error": "unauthorized",
3477
+ * "message": "Invalid API key",
3478
+ * "statusCode": 401
3479
+ * }
3480
+ */
3481
+ "application/json": components["schemas"]["ApiError"];
3482
+ };
3483
+ };
3484
+ /** @description Internal server error */
3485
+ 500: {
3486
+ headers: {
3487
+ [name: string]: unknown;
3488
+ };
3489
+ content: {
3490
+ /**
3491
+ * @example {
3492
+ * "error": "internal_error",
3493
+ * "message": "Internal server error",
3494
+ * "statusCode": 500
3495
+ * }
3496
+ */
3497
+ "application/json": components["schemas"]["ApiError"];
3498
+ };
3499
+ };
3500
+ };
3501
+ };
3502
+ getGatewayLog: {
3503
+ parameters: {
3504
+ query?: never;
3505
+ header?: never;
3506
+ path: {
3507
+ /**
3508
+ * @description Gateway log entry UUID
3509
+ * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
3510
+ */
3511
+ id: components["parameters"]["logId"];
3512
+ };
3513
+ cookie?: never;
3514
+ };
3515
+ requestBody?: never;
3516
+ responses: {
3517
+ /** @description Gateway log entry */
3518
+ 200: {
3519
+ headers: {
3520
+ [name: string]: unknown;
3521
+ };
3522
+ content: {
3523
+ /**
3524
+ * @example {
3525
+ * "data": {
3526
+ * "id": "log-uuid-1",
3527
+ * "provider": "kong",
3528
+ * "gatewayConfigName": "payments-api-gateway",
3529
+ * "environment": "staging",
3530
+ * "method": "GET",
3531
+ * "path": "/payments",
3532
+ * "routePath": "/payments",
3533
+ * "status": 200,
3534
+ * "callerId": "consumer-123",
3535
+ * "callerSource": "header:x-consumer-id",
3536
+ * "callerConfidence": "high",
3537
+ * "occurredAt": "2026-06-07T14:00:00.000Z",
3538
+ * "createdAt": "2026-06-07T14:00:01.000Z"
3539
+ * }
3540
+ * }
3541
+ */
3542
+ "application/json": components["schemas"]["GetGatewayLogResponse"];
3543
+ };
3544
+ };
3545
+ /** @description Unauthorized */
3546
+ 401: {
3547
+ headers: {
3548
+ [name: string]: unknown;
3549
+ };
3550
+ content: {
3551
+ /**
3552
+ * @example {
3553
+ * "error": "unauthorized",
3554
+ * "message": "Invalid API key",
3555
+ * "statusCode": 401
3556
+ * }
3557
+ */
3558
+ "application/json": components["schemas"]["ApiError"];
3559
+ };
3560
+ };
3561
+ /** @description Log entry not found */
3562
+ 404: {
3563
+ headers: {
3564
+ [name: string]: unknown;
3565
+ };
3566
+ content: {
3567
+ /**
3568
+ * @example {
3569
+ * "error": "not_found",
3570
+ * "message": "Log not found",
3571
+ * "statusCode": 404
3572
+ * }
3573
+ */
3574
+ "application/json": components["schemas"]["ApiError"];
3575
+ };
3576
+ };
3577
+ /** @description Internal server error */
3578
+ 500: {
3579
+ headers: {
3580
+ [name: string]: unknown;
3581
+ };
3582
+ content: {
3583
+ /**
3584
+ * @example {
3585
+ * "error": "internal_error",
3586
+ * "message": "Internal server error",
3587
+ * "statusCode": 500
3588
+ * }
3589
+ */
3590
+ "application/json": components["schemas"]["ApiError"];
3591
+ };
3592
+ };
3593
+ };
3594
+ };
3595
+ }
3596
+
3597
+ type PublicSpecVersion = Omit<SpecVersion, "content">;
3598
+ type PublicGatewayConfigVersion = Omit<GatewayConfigVersion, "content">;
3599
+ interface PaginationMeta {
3600
+ hasMore: boolean;
3601
+ limit: number;
3602
+ offset: number;
3603
+ total: number;
3604
+ }
3605
+ interface AuditLogEntry {
3606
+ id: string;
3607
+ action: AuditAction;
3608
+ actor: string;
3609
+ specName: string;
3610
+ version?: string;
3611
+ details?: Record<string, unknown>;
3612
+ createdAt: Date;
3613
+ }
3614
+
3615
+ type PushSpecRequest = components["schemas"]["PushSpecRequest"];
3616
+ type PushSpecResponse = components["schemas"]["PushSpecResponse"];
3617
+ type ValidateSpecRequest = components["schemas"]["ValidateSpecRequest"];
3618
+ type ValidateSpecResponse = components["schemas"]["ValidateSpecResponse"];
3619
+ type ListSpecsResponse = components["schemas"]["ListSpecsResponse"];
3620
+ type GetSpecResponse = components["schemas"]["GetSpecResponse"];
3621
+ type ListVersionsResponse = components["schemas"]["VersionsPage"];
3622
+ type GetVersionResponse = components["schemas"]["GetVersionResponse"];
3623
+ type GetCompatReportResponse = components["schemas"]["GetCompatReportResponse"];
3624
+ type CompareVersionsResponse = components["schemas"]["CompareVersionsResponse"];
3625
+ type HealthResponse = components["schemas"]["HealthResponse"];
3626
+ type SpecListItem = components["schemas"]["SpecListItem"];
3627
+ type ApiError = components["schemas"]["ApiError"];
3628
+ type BreakingChangeError = components["schemas"]["BreakingChangeError"];
3629
+ type PushGatewayConfigRequest = components["schemas"]["PushGatewayConfigRequest"];
3630
+ type PushGatewayConfigResponse = components["schemas"]["PushGatewayConfigResponse"];
3631
+ type ListGatewayConfigsResponse = components["schemas"]["ListGatewayConfigsResponse"];
3632
+ type GetGatewayConfigResponse = components["schemas"]["GetGatewayConfigResponse"];
3633
+ type ListGatewayConfigVersionsResponse = components["schemas"]["ListGatewayConfigVersionsResponse"];
3634
+ type GetGatewayConfigVersionResponse = components["schemas"]["GetGatewayConfigVersionResponse"];
3635
+ type ListGatewayLogsResponse = components["schemas"]["ListGatewayLogsResponse"];
3636
+ type GetGatewayLogStatsResponse = components["schemas"]["GetGatewayLogStatsResponse"];
3637
+ type GetGatewayLogResponse = components["schemas"]["GetGatewayLogResponse"];
3638
+ type GatewayLogStatEntry = components["schemas"]["GatewayLogStatEntry"];
3639
+
3640
+ export type { ApiError, AuditAction, AuditLogEntry, BreakingChange, BreakingChangeError, CallerConfidence, CallerIdentification$1 as CallerIdentification, CallerIdentificationRule$1 as CallerIdentificationRule, CompareVersionsResponse, CompatReport, GatewayConfig, GatewayConfigStore, GatewayConfigVersion, GatewayEnvironment, GatewayLog, GatewayLogFilters, GatewayLogStatEntry, GatewayLogStats, GatewayPlugin, GatewayRoute, GetCompatReportResponse, GetGatewayConfigResponse, GetGatewayConfigVersionResponse, GetGatewayLogResponse, GetGatewayLogStatsResponse, GetSpecResponse, GetVersionResponse, HealthResponse, ListGatewayConfigVersionsResponse, ListGatewayConfigsResponse, ListGatewayLogsResponse, ListSpecsResponse, ListVersionsResponse, CallerIdentification as LogCallerIdentification, CallerIdentificationRule as LogCallerIdentificationRule, PaginationMeta, Provision, ProvisionAction, PublicGatewayConfigVersion, PublicSpecVersion, PushGatewayConfigRequest, PushGatewayConfigResponse, PushSpecRequest, PushSpecResponse, SafeChange, Spec, SpecFilters, SpecListItem, SpecStore, SpecType, SpecVersion, ValidateSpecRequest, ValidateSpecResponse, VersionClassification, components, operations, paths };