1<!DOCTYPE html><html lang="EN" class="group [&.nav-toggle]:overflow-hidden"> <head><!-- Global Metadata --><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/svg+xml" href="/blog/swagger_fav.png"><link rel="sitemap" href="/blog/sitemap.xml"><link rel="alternate" type="application/rss+xml" title="Swagger blog" href="/blog/rss.xml"><meta name="generator" content="Astro v4.16.19"><!-- Canonical URL --><link rel="canonical" href="https://swagger.io/blog/"><!-- Primary Meta Tags --><title>Swagger Blog</title><meta name="title" content="Swagger Blog"><meta name="description" content="Blog"><!-- Open Graph / Facebook --><meta property="og:type" content="website"><meta property="og:url" content="https://swagger.io/blog"><meta property="og:title" content="Swagger Blog"><meta property="og:description" content="Blog"><meta property="og:image" content="https://imagedelivery.net/PVooPtpJE-25QaNkbEuXvw/62fcc3fe-88ac-4475-69a7-6404f66a5200/public"><!-- Twitter --><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://swagger.io/blog"><meta property="twitter:title" content="Swagger Blog"><meta property="twitter:description" content="Blog"><meta property="twitter:image" content="https://imagedelivery.net/PVooPtpJE-25QaNkbEuXvw/62fcc3fe-88ac-4475-69a7-6404f66a5200/public">
1<script> 2 document.addEventListener("scroll", initGTMOnEvent); 3 document.addEventListener("mousemove", initGTMOnEvent); 4 document.addEventListener("touchstart", initGTMOnEvent); 5 function initGTMOnEvent(event) { 6 initGTM(); 7 event.currentTarget.removeEventListener(event.type, initGTMOnEvent); 8 } 9 function initGTM() { 10 if (window.gtmDidInit) { 11 return false; 12 } 13 window.gtmDidInit = true; 14 15 const optimizeScript = document.createElement("script"); 16 optimizeScript.src = 17 "https://www.googleoptimize.com/optimize.js?id=GTM-PL25XRT"; 18 optimizeScript.async = true; 19 document.head.appendChild(optimizeScript); 20 21 const script = document.createElement("script"); 22 script.type = "text/javascript"; 23 script.async = true; 24 script.onload = () => { 25 dataLayer.push({ 26 event: "gtm.js", 27 "gtm.start": new Date().getTime(), 28 "gtm.uniqueEventId": 0, 29 }); 30 }; 31 script.src = "https://www.googletagmanager.com/gtm.js?id=GTM-PFFSBW3"; 32 document.head.appendChild(script); 33 } 34</script>
34<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap" rel="stylesheet"><link rel="stylesheet" href="/blog/_astro/index.B0grUBcT.css"> 35<link rel="stylesheet" href="/blog/_astro/index.BCOV3ln2.css">
35<script type="module" src="/blog/_astro/hoisted.CM2Nq6Fe.js"></script>
35</head> <body class="group-[.nav-toggle]:overflow-hidden"> <!-- Google Tag Manager (noscript) -->
vendor: 67 bytes, line 35
35<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
35GTM-PFFSBW3
vendor: 85 bytes, lines 35-36
35" height="0" width="0" style="display:none;visibility:hidden"> 36 </iframe></noscript>
36<!-- End Google Tag Manager (noscript) --> <main class="left-0 group-[.nav-toggle]:left-[300px] transition-[left] relative duration-300 ease-in-out"> <!-- <NavigationV2 /> --> <header data-astro-cid-wsb4jdj2> <div class="nav-main anti-aliased" data-astro-cid-wsb4jdj2> <div class="container" data-astro-cid-wsb4jdj2> <nav class="main" data-astro-cid-wsb4jdj2> <a href="/" class="navbar-brand" data-astro-cid-wsb4jdj2> <img src="https://static1.smartbear.co/swagger/media/assets/images/swagger_logo.svg" height="50" width="174" alt="Swagger Logo" data-astro-cid-wsb4jdj2> </a> <ul class="nav list-none" data-astro-cid-wsb4jdj2> <li class="nav-item dropdown" data-astro-cid-wsb4jdj2> <a class="nav-link dropdown-toggle" data-toggle="dropdown" data-display="static" href="#" role="button" aria-haspopup="true" aria-expanded="false" data-astro-cid-wsb4jdj2>Products</a> <div class="dropdown-menu menu-single" data-astro-cid-wsb4jdj2> <div class="dropdown-mega row pt-3" data-astro-cid-wsb4jdj2> <div class="container" data-astro-cid-wsb4jdj2> <!-- Tab panes --> <div class="col-12" data-astro-cid-wsb4jdj2> <div class="d-flex flex-column" id="proDocumentation" data-astro-cid-wsb4jdj2> <a href="/product/" class="item-main-wrapper" data-astro-cid-wsb4jdj2><span class="item-main link-underline" data-astro-cid-wsb4jdj2>Swagger</span> <p class="content" data-astro-cid-wsb4jdj2>Accelerate API development with quality and consistency 37 across OpenAPI and AsyncAPI.</p> </a> <ul class="list p-0 mt--2 mb-4 list-none" role="list" data-astro-cid-wsb4jdj2> <li class="list-item mb-2" data-astro-cid-wsb4jdj2> <a class="list-item__link" href="/product/studio/" aria-label="Studio - Collaborate on API Design" data-astro-cid-wsb4jdj2> <span class="list-item__title text-dark f14 font-weight-semibold link-underline" data-astro-cid-wsb4jdj2>Studio</span> <span class="list-item__description d-block txt-clr-neutral-12 f12 text-lg-nowrap" data-astro-cid-wsb4jdj2>Collaborate on API Design</span> </a> </li> <li class="list-item mb-2" data-astro-cid-wsb4jdj2> <a class="list-item__link" href="/product/portal/" aria-label="Portal - Deliver Up-to-date API Documentation" data-astro-cid-wsb4jdj2> <span class="list-item__title text-dark f14 font-weight-semibold link-underline" data-astro-cid-wsb4jdj2>Portal</span> <span class="list-item__description d-block txt-clr-neutral-12 f12 text-lg-nowrap" data-astro-cid-wsb4jdj2>Deliver Up-to-date API Documentation</span> </a> </li> <li class="list-item mb-2" data-astro-cid-wsb4jdj2> <a class="list-item__link" href="/product/explore/" aria-label="Explore - Quickly Test and Explore APIs" data-astro-cid-wsb4jdj2> <span class="list-item__title bg-clr-neutral-1 text-dark f14 font-weight-semibold link-underline" data-astro-cid-wsb4jdj2>Explore</span> <span class="list-item__description d-block txt-clr-neutral-12 f12 text-lg-nowrap" data-astro-cid-wsb4jdj2>Quickly Test and Explore APIs</span> </a> </li> <li class="list-item mb-2" data-astro-cid-wsb4jdj2> <a class="list-item__link" href="/product/functional-testing/" aria-label="Functional Testing - Automated API Testing" data-astro-cid-wsb4jdj2> <span class="list-item__title text-dark f14 font-weight-semibold link-underline" data-astro-cid-wsb4jdj2>Functional Testing</span> <span class="list-item__description d-block txt-clr-neutral-12 f12" data-astro-cid-wsb4jdj2>Automated API Testing</span> </a> </li> <li class="list-item mb-0" data-astro-cid-wsb4jdj2> <a class="list-item__link" href="/product/contract-testing/" aria-label="Contract Testing - Block API Breaking Changes" data-astro-cid-wsb4jdj2> <span class="list-item__title text-dark f14 font-weight-semibold link-underline" data-astro-cid-wsb4jdj2>Contract Testing</span> <span class="list-item__description d-block txt-clr-neutral-12 f12 text-lg-nowrap" data-astro-cid-wsb4jdj2>Block API Breaking Changes</span> </a> </li> </ul> <a href="/product/enterprise/" class="item-main-wrapper border-top pt-3 border-t border-t-solid border-t-[#dee2e6]" data-astro-cid-wsb4jdj2><span class="item-main link-underline" data-astro-cid-wsb4jdj2>Swagger Enterprise</span> <p class="content" data-astro-cid-wsb4jdj2> 38Standardize your APIs with projects, 39 style checks, and reusable domains. 40</p> </a> </div> </div> </div> </div> </div> </li> <li class="nav-item dropdown" data-astro-cid-wsb4jdj2> <a class="nav-link dropdown-toggle" data-toggle="dropdown" data-display="static" href="#" role="button" aria-haspopup="true" aria-expanded="true" data-astro-cid-wsb4jdj2>Community</a> <div class="dropdown-menu menu-single" data-astro-cid-wsb4jdj2> <div class="dropdown-mega row pt-3" data-astro-cid-wsb4jdj2> <div class="container" data-astro-cid-wsb4jdj2> <!-- Tab panes --> <div class="col-12" data-astro-cid-wsb4jdj2> <div class="d-flex flex-column" id="openSource" data-astro-cid-wsb4jdj2> <a href="/tools/open-source/" class="item-main-wrapper" data-astro-cid-wsb4jdj2><span class="item-main link-underline" data-astro-cid-wsb4jdj2>Swagger Open Source</span> <p class="content" data-astro-cid-wsb4jdj2>Ideal for individuals and small teams to design, build, and document APIs.</p> </a> <ul class="list p-0 mt--2 mb-4 list-none" role="list" data-astro-cid-wsb4jdj2> <li class="list-item mb-2" data-astro-cid-wsb4jdj2> <a class="list-item__link" href="/tools/swagger-codegen/" aria-label="Swagger Codegen - Generate server stubs and client SDKs" data-astro-cid-wsb4jdj2> <span class="list-item__title text-dark f14 font-weight-semibold link-underline" data-astro-cid-wsb4jdj2>Codegen</span> <span class="list-item__description d-block txt-clr-neutral-12 f12 text-lg-nowrap" data-astro-cid-wsb4jdj2>Generate server stubs and client SDKs from OpenAPI Specification definitions.</span> </a> </li> <li class="list-item mb-2" data-astro-cid-wsb4jdj2> <a class="list-item__link" href="/tools/swagger-editor/" aria-label="Swagger Editor - API editor for designing APIs" data-astro-cid-wsb4jdj2> <span class="list-item__title text-dark f14 font-weight-semibold link-underline" data-astro-cid-wsb4jdj2>Editor</span> <span class="list-item__description d-block txt-clr-neutral-12 f12 text-lg-nowrap" data-astro-cid-wsb4jdj2>API editor for designing APIs with the OpenAPI and AsyncAPI specifications.</span> </a> </li> <li class="list-item mb-0" data-astro-cid-wsb4jdj2> <a class="list-item__link" href="/tools/swagger-ui/" aria-label="Swagger UI - Visualize OpenAPI Specification" data-astro-cid-wsb4jdj2> <span class="list-item__title bg-clr-neutral-1 text-dark f14 font-weight-semibold link-underline" data-astro-cid-wsb4jdj2>UI</span> <span class="list-item__description d-block txt-clr-neutral-12 f12 text-lg-nowrap" data-astro-cid-wsb4jdj2>Visualize OpenAPI Specification definitions in an interactive UI.</span> </a> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="nav-item dropdown" data-astro-cid-wsb4jdj2> <a class="nav-link dropdown-toggle" data-toggle="dropdown" data-display="static" href="#" role="button" aria-haspopup="true" aria-expanded="false" data-astro-cid-wsb4jdj2>Learn</a> <div class="dropdown-menu menu-single" data-astro-cid-wsb4jdj2> <div class="dropdown-mega row" data-astro-cid-wsb4jdj2> <div class="container" data-astro-cid-wsb4jdj2> <div class="col-12" data-astro-cid-wsb4jdj2> <div class="d-flex flex-column" data-astro-cid-wsb4jdj2> <a class="item flex items-center gap-4" href="/solutions/api-design/" title="API Design" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu1_1_CLR.svg" data-astro-cid-wsb4jdj2> </span>
40<span class="link-underline" data-astro-cid-wsb4jdj2>API Design</span></a> <a class="item flex items-center gap-4" href="/solutions/api-development" title="API Development" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu1_2_CLR.svg" data-astro-cid-wsb4jdj2> </span><span class="link-underline" data-astro-cid-wsb4jdj2>API Development</span></a> <a class="item flex items-center gap-4" href="/solutions/api-documentation/" title="API Documentation" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu1_3_CLR.svg" data-astro-cid-wsb4jdj2> </span><span class="link-underline" data-astro-cid-wsb4jdj2>API Documentation</span></a> <a class="item flex items-center gap-4" href="/solutions/api-testing/" title="API Testing" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu1_4_CLR.svg" data-astro-cid-wsb4jdj2> </span><span class="link-underline" data-astro-cid-wsb4jdj2>API Testing</span></a> <a class="item flex items-center gap-4" href="/solutions/mocking-and-virtualization/" title="API Mocking and Virtualization" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu1_5_CLR.svg" data-astro-cid-wsb4jdj2> </span><span class="link-underline" data-astro-cid-wsb4jdj2>API Mocking and 41 Virtualization</span></a> <a class="item flex items-center gap-4" href="/solutions/governance-and-standardization" title="API Governance" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu1_6_CLR.svg" data-astro-cid-wsb4jdj2> </span><span class="link-underline" data-astro-cid-wsb4jdj2>API Governance</span></a> <a class="item flex items-center gap-4" href="/solutions/api-monitoring/" title="API Monitoring" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu1_7_CLR.svg" data-astro-cid-wsb4jdj2> </span><span class="link-underline" data-astro-cid-wsb4jdj2>API Monitoring</span></a> <a class="item flex items-center gap-4" href="/solutions/getting-started-with-oas/" title="OpenAPI & Swagger" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu1_8_CLR.svg" data-astro-cid-wsb4jdj2> </span><span class="link-underline" data-astro-cid-wsb4jdj2>OpenAPI & Swagger</span></a> </div> </div> </div> </div> </div> </li> <li class="nav-item dropdown" data-astro-cid-wsb4jdj2> <a class="nav-link dropdown-toggle" data-toggle="dropdown" data-display="static" href="#" role="button" aria-haspopup="true" aria-expanded="false" data-astro-cid-wsb4jdj2>Resources</a> <div class="dropdown-menu menu-single" data-astro-cid-wsb4jdj2> <div class="dropdown-mega row" data-astro-cid-wsb4jdj2> <div class="container" data-astro-cid-wsb4jdj2> <div class="col-12" data-astro-cid-wsb4jdj2> <div class="item-main-wrapper" data-astro-cid-wsb4jdj2> <a href="/resources/" class="item-main" data-astro-cid-wsb4jdj2><span class="link-underline" data-astro-cid-wsb4jdj2>Resources</span></a> </div> <div class="d-flex flex-column pt-3" data-astro-cid-wsb4jdj2> <a class="item flex items-center gap-4" href="/resources/open-api/" title="OpenAPI Specification" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu3_1_CLR.svg" data-astro-cid-wsb4jdj2> </span><span class="link-underline" data-astro-cid-wsb4jdj2>OpenAPI Specification</span></a> <a class="item flex items-center gap-4" href="/docs/" title="Docs" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu3_2_CLR.svg" data-astro-cid-wsb4jdj2> </span>
41<span class="link-underline" data-astro-cid-wsb4jdj2>Docs</span></a> <a class="item flex items-center gap-4" href="/blog/" title="Blog" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu3_3_CLR.svg" data-astro-cid-wsb4jdj2> </span><span class="link-underline" data-astro-cid-wsb4jdj2>Blog</span></a> <a class="item flex items-center gap-4" href="/support/" title="Support" data-astro-cid-wsb4jdj2><span class="pr-2 inline-flex" data-astro-cid-wsb4jdj2> <img class="item-icon" src="/blog/swagger/assets/images/SW_Menu3_4_CLR.svg" data-astro-cid-wsb4jdj2> </span><span class="link-underline" data-astro-cid-wsb4jdj2>Support</span></a> </div> </div> </div> </div> </div> </li> <li class="nav-item nav-item-search ml-auto" data-astro-cid-wsb4jdj2> <a class="nav-link header-search-ico sb-search-ico text-center sb-search-init" href="#" data-astro-cid-wsb4jdj2><i class="fal fa-search" data-astro-cid-wsb4jdj2> </i> </a>
41<script type="text/javascript"> 42 (function (w, d) { 43 function initSearch() { 44 var config = { 45 locations: ['Swagger_Website', 'Swagger_Documentation', 'Community', 'Swagger_Blog'], 46 availableProducts: ['SwaggerHub', 'Swagger Inspector', 'Swagger Editor', 'Swagger Codegen', 'Swagger UI', 'Swagger Open Source Tools', 'OAS'] 47 } 48 w.sbSearch.init(config); 49 } 50 51 var s = document.createElement('script'); 52 s.src = 'https://static' + ((w.location.href.indexOf('stag') == -1) ? 1 : 0) + '.smartbear.co/smartbear/react/search/search.js?t=' + Math.random(); 53 s.async = true; 54 s.onreadystatechange = function () { 55 if (this.readyState == 'complete' || this.readyState == 'loaded') { 56 initSearch(); 57 } 58 }; 59 s.onload = initSearch; 60 d.body.appendChild(s); 61 })(window, document); 62 </script>
62 </li> <li class="nav-item nav-item-login" data-astro-cid-wsb4jdj2> <a href="https://app.swaggerhub.com/login?channel=direct" class="btn c-btn c-btn-outline btn-nav txt-clr-neutral-13" title="Sign In" data-astro-cid-wsb4jdj2>Sign In</a> </li> <li class="nav-item nav-item-free-trial" data-astro-cid-wsb4jdj2> <a class="btn c-btn btn-nav btn-nav-trail-js" href="/tools/swaggerhub/why-swaggerhub" data-astro-cid-wsb4jdj2>Get started</a> </li> </ul> <div class="nav-main-toggle" data-astro-cid-wsb4jdj2> <div class="hamburger" data-astro-cid-wsb4jdj2></div> </div> </nav> </div> </div> <style> 63 .dropdown-menu.show { 64 display: block; 65 } 66 .nav-link { 67 display: block; 68 padding: .5rem 1rem; 69 } 70 .dropdown-menu { 71 position: absolute; 72 top: 100%; 73 left: 0; 74 z-index: 1000; 75 display: none; 76 float: left; 77 min-width: 10rem; 78 padding: .5rem 0; 79 margin: .125rem 0 0; 80 font-size: 1rem; 81 color: #212529; 82 text-align: left; 83 list-style: none; 84 background-color: #fff; 85 background-clip: padding-box; 86 border: 1px solid rgba(0,0,0,.15); 87 border-radius: .25rem 88 } 89 90 91 .nav { 92 display: flex; 93 flex-wrap: wrap; 94 padding-left: 0; 95 margin-bottom: 0; 96 list-style: none; 97 line-height: 24px; 98 align-items: center; 99 } 100 101 .list { 102 overflow: hidden; 103 } 104 105 .list-item { 106 margin-bottom: 15px; 107 margin-left: 32px; 108 } 109 110 .list-item__link { 111 position: relative; 112 } 113 114 .link-item__title, 115 .list-item__description, 116 .content { 117 line-height: 20px; 118 } 119 120 .list-item__title::before { 121 content: ""; 122 pointer-events: none; 123 width: 10px; 124 height: 100px; 125 position: absolute; 126 top: 12px; 127 left: -16px; 128 border: 1px solid #d8dde4; 129 border-bottom: 0; 130 border-right: 0; 131 } 132 133 .list-item:first-of-type .list-item__title::after { 134 content: ""; 135 pointer-events: none; 136 width: 10px; 137 height: 34px; 138 position: absolute; 139 top: -20px; 140 left: -16px; 141 border-left: 1px solid #d8dde4; 142 } 143 144 .list-item:last-of-type .list-item__title::before { 145 content: ""; 146 pointer-events: none; 147 width: 10px; 148 height: 48px; 149 position: absolute; 150 top: 13px; 151 left: -16px; 152 border: 0px; 153 border-top: 1px solid #d8dde4; 154 background-color: inherit; 155 } 156 157 .bg-neutral-1-2 { 158 background: #ffffff; 159 } 160 @media (min-width: 1230px) { 161 .bg-neutral-1-2 { 162 background: #f8f9fa; 163 } 164 .menu-single { 165 width: 335px; 166 } 167 } 168</style>
168<script> 169 document.addEventListener("DOMContentLoaded", () => { 170 const toggle = document.querySelectorAll(".nav-main-toggle"); 171 const dropdownToggles = document.querySelectorAll(".nav-main .dropdown-toggle"); 172 console.log(toggle); 173 [...toggle].forEach((t) => { 174 t.addEventListener("click", () => { 175 document.documentElement.classList.toggle("nav-toggle"); 176 }) 177 }); 178 179 [...dropdownToggles].forEach((t) => { 180 t.addEventListener("click", (e) => { 181 e.preventDefault(); 182 dropdownToggles.forEach((dt) => { 183 if (dt !== t) { 184 dt.parentElement.querySelector(".dropdown-menu").classList.remove("show"); 185 } 186 }); 187 t.parentElement.querySelector(".dropdown-menu").classList.toggle("show"); 188 }) 189 }) 190 }) 191</script>
191 </header> <!-- <RedesignedHeader isTransparent={false} /> --> <div class="tw-login-modal tw-login-modal--inactive js-tw-login-modal" role="dialog" aria-modal="true" aria-labelledby="tw-login-modal-title" tabindex="-1" data-astro-cid-o4dbeirz> <div class="tw-login-modal__backdrop js-tw-modal-backdrop" aria-hidden="true" data-astro-cid-o4dbeirz></div> <div class="tw-login-modal__inner-wrapper" data-astro-cid-o4dbeirz> <div class="tw-login-modal__container" data-astro-cid-o4dbeirz> <div class="js-modal-content tw-login-modal__content tw-login-modal__content--centered" data-astro-cid-o4dbeirz> <div class="tw-login-modal__header" data-astro-cid-o4dbeirz> <span class="tw-login-modal__title" data-astro-cid-o4dbeirz>Login</span> <button type="button" class="tw-login-modal__close js-modal-close" aria-label="Close login modal" data-astro-cid-o4dbeirz> <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="currentColor" data-astro-cid-o4dbeirz> <path d="M7.27298 6.00019L11.1191 2.15407L11.9122 1.36092C12.0293 1.24391 12.0293 1.05378 11.9122 0.936779L11.0636 0.0881278C10.9466 -0.0288758 10.7565 -0.0288758 10.6395 0.0881278L6.00019 4.7274L1.36092 0.0877527C1.24391 -0.0292509 1.05378 -0.0292509 0.936779 0.0877527L0.0877527 0.936404C-0.0292509 1.05341 -0.0292509 1.24354 0.0877527 1.36054L4.7274 6.00019L0.0877527 10.6395C-0.0292509 10.7565 -0.0292509 10.9466 0.0877527 11.0636L0.936404 11.9122C1.05341 12.0293 1.24354 12.0293 1.36054 11.9122L6.00019 7.27298L9.84631 11.1191L10.6395 11.9122C10.7565 12.0293 10.9466 12.0293 11.0636 11.9122L11.9122 11.0636C12.0293 10.9466 12.0293 10.7565 11.9122 10.6395L7.27298 6.00019Z" fill="currentColor" data-astro-cid-o4dbeirz></path> </svg> </button> </div> <div class="tw-login-modal__body" data-astro-cid-o4dbeirz> <div class="tw-login-modal__tools" data-astro-cid-o4dbeirz> <p class="tw-login-modal__section-title text-center" data-astro-cid-o4dbeirz> 192SmartBear Tools 193</p> <ul class="tw-tools-list list-none" data-astro-cid-o4dbeirz> <li class="tw-tools-list__item" data-astro-cid-o4dbeirz> <a target="_blank" href="https://accounts.smartbear.com/accounts/login" class="tw-tools-list__link" data-astro-cid-o4dbeirz> 194AlertSite 195</a> </li> <li class="tw-tools-list__item" data-astro-cid-o4dbeirz> <a target="_blank" href="https://app.loadninja.com/" class="tw-tools-list__link" data-astro-cid-o4dbeirz> 196LoadNinja 197</a> </li> <li class="tw-tools-list__item tw-tools-list__item--secondary" data-astro-cid-o4dbeirz> <a target="_blank" href="https://app.swaggerhub.com/login" class="tw-tools-list__link" data-astro-cid-o4dbeirz> 198Swagger 199</a> </li> <li class="tw-tools-list__item tw-tools-list__item--secondary" data-astro-cid-o4dbeirz> <a target="_blank" href="https://login.qacomplete.smartbear.com/" class="tw-tools-list__link" data-astro-cid-o4dbeirz> 200QAComplete 201</a> </li> <li class="tw-tools-list__item" data-astro-cid-o4dbeirz> <a target="_blank" href="https://cloud.bitbar.com/api/v2/sbid/login" class="tw-tools-list__link" data-astro-cid-o4dbeirz> 202BitBar 203</a> </li> <li class="tw-tools-list__item tw-tools-list__item--secondary" data-astro-cid-o4dbeirz> <a target="_blank" href="https://app.swaggerhub.com/login" class="tw-tools-list__link" data-astro-cid-o4dbeirz> 204SwaggerHub 205</a> </li> <li class="tw-tools-list__item" data-astro-cid-o4dbeirz> <a target="_blank" href="https://app.bugsnag.com/user/sign_in/" class="tw-tools-list__link" data-astro-cid-o4dbeirz> 206BugSnag 207</a> </li> <li class="tw-tools-list__item tw-tools-list__item--tertiary" data-astro-cid-o4dbeirz> <a target="_blank" href="https://app.visualtest.io/login" class="tw-tools-list__link" data-astro-cid-o4dbeirz> 208VisualTest 209</a> </li> <li class="tw-tools-list__item" data-astro-cid-o4dbeirz> <a target="_blank" href="https://studio.cucumberstudio.com/users/sign_in" class="tw-tools-list__link" data-astro-cid-o4dbeirz> 210CucumberStudio 211</a> </li> </ul> </div> </div> <div class="tw-login-modal__footer" data-astro-cid-o4dbeirz> <p class="tw-login-modal__section-title tw-login-modal__section-title--centered" data-astro-cid-o4dbeirz> 212Additional Links 213</p> <div class="tw-login-modal__link-group" data-astro-cid-o4dbeirz> <a target="_blank" href="https://community.smartbear.com" class="tw-login-modal__link tw-login-modal__link--outlined" data-astro-cid-o4dbeirz> 214SmartBear Community 215</a> <a target="_blank" href="https://smartbear.my.site.com/portal/SupPortalHome" class="tw-login-modal__link tw-login-modal__link--outlined" data-astro-cid-o4dbeirz> 216Case Management 217</a> <a target="_blank" href="https://manage.smartbear.com/" class="tw-login-modal__link tw-login-modal__link--outlined" data-astro-cid-o4dbeirz> 218License System 219</a> </div> </div> </div> </div> </div> </div>
219<script type="text/javascript"> 220 document.addEventListener("DOMContentLoaded", () => { 221 const modal = document.querySelector(".js-tw-login-modal"); 222 const body = document.body; 223 let firstFocus = true; 224 console.log(modal); 225 226 const handleModalToggle = (isActive) => { 227 modal.classList.toggle("active", isActive); 228 body.classList.toggle("overflow-hidden", isActive); 229 firstFocus = isActive; 230 if (isActive) { 231 modal.focus(); 232 } 233 }; 234 235 if (modal) { 236 [...document.querySelectorAll(".js-login-modal-trigger")].forEach( 237 (el) => { 238 el.addEventListener("click", (e) => { 239 e.preventDefault(); 240 handleModalToggle(true); 241 }); 242 }, 243 ); 244 245 [...document.querySelectorAll(".js-modal-close")].forEach((el) => { 246 el.addEventListener("click", (e) => { 247 e.preventDefault(); 248 handleModalToggle(false); 249 }); 250 }); 251 252 modal.addEventListener("click", (e) => { 253 if (!e.target.closest(".js-modal-content")) { 254 handleModalToggle(false); 255 } 256 }); 257 const focusableElements = modal.querySelectorAll( 258 "button, a, input, select, textarea, [tabindex]:not([tabindex='-1'])", 259 ); 260 document.addEventListener("keydown", (e) => { 261 if (e.key === "Escape") { 262 handleModalToggle(false); 263 } 264 265 if (e.key === "Tab" && modal.classList.contains("active")) { 266 if (firstFocus == true) { 267 modal.focus(); 268 firstFocus = false; 269 } else { 270 if ( 271 !e.shiftKey && 272 e.target == 273 focusableElements[focusableElements.length - 1] 274 ) { 275 focusableElements[0].focus(); 276 } 277 278 if (e.shiftKey && e.target == focusableElements[0]) { 279 focusableElements[ 280 focusableElements.length - 1 281 ].focus(); 282 } 283 } 284 } 285 }); 286 } 287 }); 288</script>
288 <div class="min-h-sp-60"></div> <div class="min-h-screen flex flex-col"> <section class="py-12 bg-homepage-hero-pattern bg-center bg-cover sm2x:pt-24 xl:pt-[101px]" style="background-image: linear-gradient(191deg,rgba(248,250,251,0) 25%, rgba(248,250,251, .1) 45%, rgba(248, 250, 251, 1) 60%), url(/blog/bg-dot-gradient-white-2.png)"> <div class="container"> <div class="mx-auto max-w-6xl xl:max-w-[1170px]"> <h1 class="text-clr-accent-1 uppercase text-base lg:text-lg font-medium font-dm-sans leading-6 mt-4 mb-6 sm2x:mt-0 lg:leading-normal"> 289Swagger Blog 290</h1> <div class="mt-5"> <div class="grid grid-cols-1 sm2x:grid-cols-2 lg:gap-x-16"><div class="pr-12 lg:pr-4 xl:pr-14"><a href="/blog/testing-at-ai-speed-we-built-a-drift-detection-capability-then-used-it-on-ourselves/" class="font-semibold text-lg lg:text-xl text-clr-neutral-14 hover:text-[#3489d1] hover:underline transition-colors ease-in-out duration-150 leading-normal lg:leading-normal">Testing at AI speed: We built a drift detection capability, then used it on ourselves</a><div class="text-clr-neutral-12 mt-6 text-[14.75px] leading-[25px] mb-2 sm:text-[15.25px] sm:leading-[26px] md:text-[15.75px] md:leading-[27px] md2x:text-base md2x:leading-[1.75]">Our development outpaced our ability to test it, as generative AI sped up how quickly we could ship code. Releases were shipping...</div><div class="lg:pt-4 lg:flex lg:items-center xl:justify-between xl:pr-2"><div class="hidden lg:block"><div class="w-full"><div class="flex items-center lg:justify-between"><div class="author-info flex items-center w-full lg:items-start"><div class="author-img bg-img w-[50px] h-[50px] max-w-[50px] max-h-[50px] min-w-[50px] min-h-[50px] lg:w-[65px] lg:h-[65px] lg:max-w-[65px] lg:max-h-[65px] lg:min-w-[65px] lg:min-h-[65px] mr-6 flex items-center"><img class="object-cover w-full h-full rounded-full my-0" src="https://imagedelivery.net/PVooPtpJE-25QaNkbEuXvw/9d00031c-27fa-4365-0e5e-69d8af361100/gamma=0"/></div><div class="author-name pr-6"><div class="text-base text-clr-neutral-13 xl:mt-0"><span class="text-inherit">Ewa Ostrowska</span></div><div class="text-sm leading-[2.2] text-clr-neutral-13 lg:whitespace-nowrap"><span class="fal fa-calendar mr-[1px] ml-[1px]"> </span> <!-- -->September 08, 2026</div></div></div></div></div></div><div class="xl:max-w-max w-full text-center flex pt-4 lg:justify-end lg:pt-0"><a href="/blog/testing-at-ai-speed-we-built-a-drift-detection-capability-then-used-it-on-ourselves/" class="px-[19px] py-2 text-base text-white rounded border border-solid border-clr-brand-2 bg-clr-brand-2 hover:bg-clr-brand-1 hover:border-clr-brand-1 transition-colors duration-150 ease-in-out leading-[22px] hover:text-neutral-1">Read More</a></div></div></div><a class="hidden sm2x:block pl-[15px] xl:pl-4" href="/blog/testing-at-ai-speed-we-built-a-drift-detection-capability-then-used-it-on-ourselves/"><div class="flex relative order-md-1 text-center justify-center items-start sm2x:justify-end"><div class="hero-img relative"><div class="hero-img-bg block absolute top-[10px] left-[10px] lg:top-[18px] lg:left-[18px] bg-clr-neutral-5 w-full h-full z-0 max-w-prose"></div><img class="object-cover w-full h-full max-h-[150px] lg:max-h-[200px] xl:max-h-[300px] relative z-10 m-0 max-w-prose hover:opacity-90 transition-opacity duration-150 ease-in-out" src="https://imagedelivery.net/PVooPtpJE-25QaNkbEuXvw/99a2ed06-01f8-4eac-8cd9-c56463e16900/gamma=0" alt="Testing at AI speed: We built a drift detection capability, then used it on ourselves"/></div></div></a></div> <div class="mt-2 pt-12 pb-2 bs-column-12 -mx-[15px]"><h2 class="text-center text-clr-accent-1 text-sm font-dm-sans font-medium mb-4 uppercase leading-[21px] lg:block lg:-ml-[15px]">Editor's Pick</h2><div class="flex flex-col items-center sm2x:flex-row xl:justify-between lg:flex-nowrap lg:max-w-[calc(100%-16px)]"><a href="/blog/turn-every-spec-change-to-a-green-test-a-step-by-step-guide-to-ai-assisted-api-test-sync/" class="flex w-full sm:w-full py-4 px-5 sm2x:w-[310px] lg:w-[370px] lg:text-left sm2x:px-[15px] lg:px-5 border border-solid border-transparent hover:border-clr-neutral-17 hover:shadow-bs-5 transition-shadow duration-150 ease-in-out "><span class="min-w-[70px] w-[70px] h-[70px] block bg-cover bg-center bg-no-repeat" style="background-image:url(https://imagedelivery.net/PVooPtpJE-25QaNkbEuXvw/615ee489-41ce-49ce-7762-28ad59fa7d00/gamma=0)"></span><span class="flex flex-col pl-4 lg:pl-4 xl:pl-6"><h3 class="text-sm font-semibold text-clr-neutral-12 mb-1 line-clamp-2 sm:line-clamp-1 lg:line-clamp-2 leading-[22px]">Turn every spec change to a green test: A step-by-step guide to AI-assisted API test sync </h3><span class="text-sm text-clr-neutral-11 mb-0 leading-[22px]">Imagine this scenario:...</span></span></a><div class="hidden lg:flex h-[70px] border-r border-r-solid border-r-clr-neutral-6"></div><a href="/blog/reduce-api-governance-fragmentation-with-smartbear-swagger-now-fluent-in-multiple-protocols/" class="flex w-full sm:w-full py-4 px-5 sm2x:w-[310px] lg:w-[370px] lg:text-left sm2x:px-[15px] lg:px-5 border border-solid border-transparent hover:border-clr-neutral-17 hover:shadow-bs-5 transition-shadow duration-150 ease-in-out "><span class="min-w-[70px] w-[70px] h-[70px] block bg-cover bg-center bg-no-repeat" style="background-image:url(https://imagedelivery.net/PVooPtpJE-25QaNkbEuXvw/b380ef7e-d947-4286-d60e-671d177c7100/gamma=0)"></span><span class="flex flex-col pl-4 lg:pl-4 xl:pl-6"><h3 class="text-sm font-semibold text-clr-neutral-12 mb-1 line-clamp-2 sm:line-clamp-1 lg:line-clamp-2 leading-[22px]">Reduce API governance fragmentation with SmartBear Swagger, now fluent in multiple protocols</h3><span class="text-sm text-clr-neutral-11 mb-0 leading-[22px]">
290Update â September 202...</span></span></a><div class="hidden lg:flex h-[70px] border-r border-r-solid border-r-clr-neutral-6"></div><a href="/blog/prevent-ai-native-api-governance-debt/" class="flex w-full sm:w-full py-4 px-5 sm2x:w-[310px] lg:w-[370px] lg:text-left sm2x:px-[15px] lg:px-5 border border-solid border-transparent hover:border-clr-neutral-17 hover:shadow-bs-5 transition-shadow duration-150 ease-in-out sm2x:hidden lg:flex"><span class="min-w-[70px] w-[70px] h-[70px] block bg-cover bg-center bg-no-repeat" style="background-image:url(https://imagedelivery.net/PVooPtpJE-25QaNkbEuXvw/70e8636b-2758-4441-99b6-c9769a3d2600/gamma=0)"></span><span class="flex flex-col pl-4 lg:pl-4 xl:pl-6"><h3 class="text-sm font-semibold text-clr-neutral-12 mb-1 line-clamp-2 sm:line-clamp-1 lg:line-clamp-2 leading-[22px]">How to prevent AI-native API governance debt  </h3><span class="text-sm text-clr-neutral-11 mb-0 leading-[22px]">AI-native API governan...</span></span></a></div></div> </div> </div> </div> </section> <div class="container mx-auto px-5"> <section> <div class="max-w-6xl pt-12 -mx-[15px] xl:mx-auto"> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style>
290<script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();;(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script>
290<astro-island uid="2jsjSt" component-url="/blog/_astro/PostsArchive.CUjKsqQ2.js" component-export="default" renderer-url="/blog/_astro/client.CJExgEM5.js" props="{"base":[0,"/blog"]}" ssr="" client="only" opts="{"name":"PostsArchive","value":"react"}"></astro-island> </div> </section> </div> </div> <footer class="bg-neutral-14 relative"><div class="absolute bottom-0 right-0 pointer-events-none"><svg width="604" height="377" viewBox="0 0 604 377" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M388.806 332.894H283.228L264.496 392.993H407.537L388.806 332.894ZM672 392.993L616.601 215.422L652.385 100.709L519.31 0L425.579 70.9428H246.421L152.723 0L19.6149 100.709L55.3985 215.422L0 392.993H174.781L161.202 349.423L335.99 217.158L510.798 349.43L497.219 393L672 392.993Z" fill="black" fill-opacity="0.08"></path></svg></div><div class="mx-auto container py-20"><div class="xl:grid xl:grid-cols-3 xl:gap-8 pb-24"><div><svg width="167" height="22" viewBox="0 0 167 22" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_4_135)"><path d="M52.161 9.96105C52.161 9.96105 49.5564 9.65133 48.4785 9.65133C46.9154 9.65133 46.116 10.2321 46.116 11.3769C46.116 12.6158 46.7847 12.9081 48.9617 13.5287C51.6403 14.303 52.6072 15.0409 52.6072 17.3088C52.6072 20.2171 50.8591 21.4769 48.3477 21.4769C46.9481 21.4148 45.5552 21.2397 44.1815 20.9531L44.3862 19.228C44.3862 19.228 46.8972 19.5764 48.2181 19.5764C49.7986 19.5764 50.5241 18.8408 50.5241 17.4436C50.5241 16.3208 49.9476 15.9313 47.9945 15.447C45.2416 14.7114 44.0511 13.8376 44.0511 11.5313C44.0511 8.85573 45.7439 7.75079 48.292 7.75079C49.6464 7.80448 50.9952 7.95974 52.3282 8.21538L52.161 9.96105Z" fill="white"></path><path d="M57.5593 7.98425H61.1498L63.9955 18.3557L66.8412 7.98425H70.4495V21.2636H68.3664V9.78684H68.2568L65.0746 20.7208H62.9164L59.7338 9.78684H59.6224V21.2636H57.5575L57.5593 7.98425Z" fill="white"></path><path d="M102.426 7.98425H111.726V9.90299H108.136V21.2636H106.053V9.90299H102.426V7.98425Z" fill="white"></path><path d="M120.71 7.98425C123.24 7.98425 124.598 8.97266 124.598 11.435C124.598 13.044 124.115 13.8384 123.091 14.4203C124.189 14.8659 124.914 15.6801 124.914 17.5024C124.914 20.2171 123.333 21.2636 120.859 21.2636H115.874V7.98425H120.71ZM117.939 9.84491V13.6448H120.673C121.939 13.6448 122.496 12.9867 122.496 11.6866C122.496 10.409 121.865 9.84491 120.599 9.84491H117.939ZM117.939 15.4675V19.403H120.748C122.031 19.403 122.794 18.9771 122.794 17.3863C122.794 15.8741 121.716 15.4675 120.71 15.4675H117.939Z" fill="white"></path><path d="M130.032 7.98425H138.068V9.86466H132.097V13.6251H136.951V15.4675H132.097V19.3639H138.068V21.2636H130.032V7.98425Z" fill="white"></path><path d="M145.471 7.98425H149.583L152.745 21.2636H150.661L149.72 17.3673H145.333L144.392 21.2636H142.327L145.471 7.98425ZM145.746 15.4675H149.32L148.001 9.78684H147.072L145.746 15.4675Z" fill="white"></path><path d="M159.403 17.3282V21.2636H157.339V7.98425H162.176C164.984 7.98425 166.491 9.6614 166.491 12.6076C166.491 14.488 165.765 16.1846 164.408 16.8435L166.51 21.2636H164.24L162.398 17.3282H159.403ZM162.176 9.84491H159.404V15.4675H162.213C163.775 15.4675 164.37 14.0033 164.37 12.6274C164.37 11.1148 163.663 9.84491 162.176 9.84491Z" fill="white"></path><path d="M78.0954 7.98425H82.2055L85.3676 21.2636H83.2845L82.3437 17.3673H77.9568L77.0163 21.2636H74.9518L78.0954 7.98425ZM78.3695 15.4675H81.9421L80.6235 9.78684H79.6948L78.3695 15.4675Z" fill="white"></path><path d="M92.0278 17.3282V21.2636H89.9629V7.98425H94.7996C97.6077 7.98425 99.1143 9.6614 99.1143 12.6076C99.1143 14.488 98.3889 16.1846 97.0312 16.8435L99.1333 21.2636H96.8641L95.0224 17.3282H92.0278ZM94.7996 9.84491H92.0278V15.4675H94.8367C96.399 15.4675 96.9941 14.0033 96.9941 12.6274C96.9941 11.1148 96.2876 9.84491 94.7996 9.84491Z" fill="white"></path><path d="M21.75 18.6356H15.8439L14.796 22H22.7978L21.75 18.6356ZM37.592 22L34.493 12.0594L36.4947 5.63773L29.0505 0L23.807 3.97142H13.7849L8.54338 0L1.09727 5.63773L3.09902 12.0594L0 22H9.77734L9.01772 19.5609L18.7954 12.1566L28.5743 19.5613L27.8146 22.0004L37.592 22Z" fill="#FF730B"></path></g><defs><clipPath id="clip0_4_135"><rect width="167" height="22" fill="white"></rect></clipPath></defs></svg><p class="mt-7 text-xs font-bold text-accent-1 font-open-sans uppercase">Contact us</p><ul class="mt-3 space-y-3"><li class="text-sm text-neutral-5 flex gap-2"><em class="text-neutral-10">USA</em> <!-- -->+1 617-684-2600</li><li class="text-sm text-neutral-5 flex gap-2"><em class="text-neutral-10">EUR</em> <!-- -->+353 91 398300</li><li class="text-sm text-neutral-5 flex gap-2"><em class="text-neutral-10">AUS</em> <!-- -->+61 391929960</li></ul></div><div class="mt-10 grid grid-cols-2 gap-8 xl:col-span-2 xl:mt-0"><div class="md:grid md:grid-cols-2 md:gap-8"><div><p class="text-xs font-bold text-accent-1 font-open-sans uppercase">Company</p><ul class="mt-3 space-y-3"><li class="text-sm"><a href="https://smartbear.com/company/about-us/" class="group/footer text-neutral-5 hover:text-accent-1" target="_blank">About<!-- --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-[14px] w-[14px] inline-block absolute -mt-[3px] ml-[2px] text-neutral-10 group-hover/footer:text-accent-1"><path fill-rule="evenodd" d="M5.22 14.78a.75.75 0 0 0 1.06 0l7.22-7.22v5.69a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-.75-.75h-7.5a.75.75 0 0 0 0 1.5h5.69l-7.22 7.22a.75.75 0 0 0 0 1.06Z" clip-rule="evenodd"></path></svg></a></li><li class="text-sm"><a href="https://smartbear.com/company/careers/" class="group/footer text-neutral-5 hover:text-accent-1" target="_blank">Careers<!-- --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-[14px] w-[14px] inline-block absolute -mt-[3px] ml-[2px] text-neutral-10 group-hover/footer:text-accent-1"><path fill-rule="evenodd" d="M5.22 14.78a.75.75 0 0 0 1.06 0l7.22-7.22v5.69a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-.75-.75h-7.5a.75.75 0 0 0 0 1.5h5.69l-7.22 7.22a.75.75 0 0 0 0 1.06Z" clip-rule="evenodd"></path></svg></a></li><li class="text-sm"><a href="https://smartbear.com/contact-us/" class="group/footer text-neutral-5 hover:text-accent-1" target="_blank">Contact Us<!-- --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-[14px] w-[14px] inline-block absolute -mt-[3px] ml-[2px] text-neutral-10 group-hover/footer:text-accent-1"><path fill-rule="evenodd" d="M5.22 14.78a.75.75 0 0 0 1.06 0l7.22-7.22v5.69a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-.75-.75h-7.5a.75.75 0 0 0 0 1.5h5.69l-7.22 7.22a.75.75 0 0 0 0 1.06Z" clip-rule="evenodd"></path></svg></a></li><li class="text-sm"><a href="https://smartbear.com/company/news/" class="group/footer text-neutral-5 hover:text-accent-1" target="_blank">Newsroom<!-- --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-[14px] w-[14px] inline-block absolute -mt-[3px] ml-[2px] text-neutral-10 group-hover/footer:text-accent-1"><path fill-rule="evenodd" d="M5.22 14.78a.75.75 0 0 0 1.06 0l7.22-7.22v5.69a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-.75-.75h-7.5a.75.75 0 0 0 0 1.5h5.69l-7.22 7.22a.75.75 0 0 0 0 1.06Z" clip-rule="evenodd"></path></svg></a></li><li class="text-sm"><a href="https://smartbear.com/partners/" class="group/footer text-neutral-5 hover:text-accent-1" target="_blank">Partners<!-- --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-[14px] w-[14px] inline-block absolute -mt-[3px] ml-[2px] text-neutral-10 group-hover/footer:text-accent-1"><path fill-rule="evenodd" d="M5.22 14.78a.75.75 0 0 0 1.06 0l7.22-7.22v5.69a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-.75-.75h-7.5a.75.75 0 0 0 0 1.5h5.69l-7.22 7.22a.75.75 0 0 0 0 1.06Z" clip-rule="evenodd"></path></svg></a></li><li class="text-sm"><a href="https://smartbear.com/company/responsibility/" class="group/footer text-neutral-5 hover:text-accent-1" target="_blank">Responsibility<!-- --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-[14px] w-[14px] inline-block absolute -mt-[3px] ml-[2px] text-neutral-10 group-hover/footer:text-accent-1"><path fill-rule="evenodd" d="M5.22 14.78a.75.75 0 0 0 1.06 0l7.22-7.22v5.69a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-.75-.75h-7.5a.75.75 0 0 0 0 1.5h5.69l-7.22 7.22a.75.75 0 0 0 0 1.06Z" clip-rule="evenodd"></path></svg></a></li></ul></div><div class="mt-10 md:mt-0"><p class="text-xs font-bold text-accent-1 font-open-sans uppercase">Resources</p><ul class="mt-3 space-y-3"><li class="text-sm"><a href="https://swagger.io/specification/" class="group/footer text-neutral-5 hover:text-accent-1" target="_self">OpenAPI Specification<!-- -->
290 </a></li><li class="text-sm"><a href="https://swagger.io/resources/" class="group/footer text-neutral-5 hover:text-accent-1" target="_self">Resource Center<!-- --> </a></li><li class="text-sm"><a href="https://swagger.io/blog/" class="group/footer text-neutral-5 hover:text-accent-1" target="_self">Blog<!-- --> </a></li><li class="text-sm"><a href="https://swagger.io/docs/" class="group/footer text-neutral-5 hover:text-accent-1" target="_self">Docs<!-- --> </a></li></ul></div></div><div class="md:grid md:grid-cols-2 md:gap-8"><div><p class="text-xs font-bold text-accent-1 font-open-sans uppercase">Products</p><ul class="mt-3 space-y-3"><li class="text-sm"><a href="https://swagger.io/product/" class="group/footer text-neutral-5 hover:text-accent-1" target="_self">Swagger<!-- --> </a></li><li class="text-sm"><a href="https://swagger.io/tools/swagger-editor/" class="group/footer text-neutral-5 hover:text-accent-1" target="_self">Swagger Editor<!-- --> </a></li><li class="text-sm"><a href="https://swagger.io/tools/swagger-codegen/" class="group/footer text-neutral-5 hover:text-accent-1" target="_self">Swagger Codegen<!-- --> </a></li><li class="text-sm"><a href="https://swagger.io/tools/swagger-ui/" class="group/footer text-neutral-5 hover:text-accent-1" target="_self">Swagger UI<!-- --> </a></li></ul></div><div class="mt-10 md:mt-0"><p class="text-xs font-bold text-accent-1 font-open-sans uppercase">Legal</p><ul class="mt-3 space-y-3"><li class="text-sm"><a href="https://smartbear.com/privacy/" class="group/footer text-neutral-5 hover:text-accent-1" target="_blank">Privacy<!-- --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-[14px] w-[14px] inline-block absolute -mt-[3px] ml-[2px] text-neutral-10 group-hover/footer:text-accent-1"><path fill-rule="evenodd" d="M5.22 14.78a.75.75 0 0 0 1.06 0l7.22-7.22v5.69a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-.75-.75h-7.5a.75.75 0 0 0 0 1.5h5.69l-7.22 7.22a.75.75 0 0 0 0 1.06Z" clip-rule="evenodd"></path></svg></a></li><li class="text-sm"><a href="https://smartbear.com/security/" class="group/footer text-neutral-5 hover:text-accent-1" target="_blank">Security<!-- --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-[14px] w-[14px] inline-block absolute -mt-[3px] ml-[2px] text-neutral-10 group-hover/footer:text-accent-1"><path fill-rule="evenodd" d="M5.22 14.78a.75.75 0 0 0 1.06 0l7.22-7.22v5.69a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-.75-.75h-7.5a.75.75 0 0 0 0 1.5h5.69l-7.22 7.22a.75.75 0 0 0 0 1.06Z" clip-rule="evenodd"></path></svg></a></li><li class="text-sm"><a href="https://smartbear.com/terms-of-use/" class="group/footer text-neutral-5 hover:text-accent-1" target="_blank">Terms of Use<!-- --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-[14px] w-[14px] inline-block absolute -mt-[3px] ml-[2px] text-neutral-10 group-hover/footer:text-accent-1"><path fill-rule="evenodd" d="M5.22 14.78a.75.75 0 0 0 1.06 0l7.22-7.22v5.69a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-.75-.75h-7.5a.75.75 0 0 0 0 1.5h5.69l-7.22 7.22a.75.75 0 0 0 0 1.06Z" clip-rule="evenodd"></path></svg></a></li><li class="text-sm"><a href="https://smartbear.com/website-terms-of-use/" class="group/footer text-neutral-5 hover:text-accent-1" target="_blank">Website Terms of Use<!-- --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-[14px] w-[14px] inline-block absolute -mt-[3px] ml-[2px] text-neutral-10 group-hover/footer:text-accent-1"><path fill-rule="evenodd" d="M5.22 14.78a.75.75 0 0 0 1.06 0l7.22-7.22v5.69a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-.75-.75h-7.5a.75.75 0 0 0 0 1.5h5.69l-7.22 7.22a.75.75 0 0 0 0 1.06Z" clip-rule="evenodd"></path></svg></a></li></ul></div></div></div></div><div class="border-t border-neutral-12 pt-7 md:flex md:items-center md:justify-between"><div class="flex gap-x-6 md:order-2"><a href="https://www.facebook.com/smartbear" target="_blank" class="flex items-center"><span class="sr-only">Facebook</span><div><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="fill-accent-1 hover:fill-neutral-1"><g clip-path="url(#clip0_4_199)"><path d="M8.35 19.9084C3.6 19.0584 0 14.9584 0 10.0084C0 4.50842 4.5 0.00842285 10 0.00842285C15.5 0.00842285 20 4.50842 20 10.0084C20 14.9584 16.4 19.0584 11.65 19.9084L11.1 19.4584H8.9L8.35 19.9084Z"></path>
290<path d="M13.9 12.8084L14.35 10.0084H11.7V8.05845C11.7 7.25845 12 6.65845 13.2 6.65845H14.5V4.10845C13.8 4.00845 13 3.90845 12.3 3.90845C10 3.90845 8.40002 5.30845 8.40002 7.80845V10.0084H5.90002V12.8084H8.40002V19.8584C8.95002 19.9584 9.50002 20.0084 10.05 20.0084C10.6 20.0084 11.15 19.9584 11.7 19.8584V12.8084H13.9Z" fill="#212529"></path></g><defs><clipPath id="clip0_4_199"><rect width="20" height="20" fill="white" transform="translate(0 0.00842285)"></rect></clipPath></defs></svg></div></a><a href="https://www.instagram.com/smartbear_software/" target="_blank" class="flex items-center"><span class="sr-only">Instagram</span><div><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="fill-accent-1 hover:fill-neutral-1"><g clip-path="url(#clip0_14_12)"><path d="M10.0009 0.00866699C7.28508 0.00866699 6.94424 0.0205423 5.87756 0.0690845C4.81297 0.117835 4.08629 0.286378 3.45045 0.533673C2.79274 0.789092 2.23481 1.13076 1.67898 1.68681C1.12272 2.24265 0.78105 2.80057 0.524797 3.45808C0.276878 4.09413 0.108126 4.82101 0.0602089 5.88519C0.0125 6.95186 0 7.29291 0 10.0088C0 12.7246 0.0120837 13.0644 0.0604175 14.1311C0.109376 15.1957 0.27792 15.9224 0.525006 16.5582C0.780633 17.2159 1.1223 17.7739 1.67835 18.3297C2.23398 18.8859 2.7919 19.2285 3.4492 19.4839C4.08546 19.7312 4.81234 19.8997 5.87673 19.9485C6.94341 19.997 7.28403 20.0089 9.99969 20.0089C12.7158 20.0089 13.0556 19.997 14.1222 19.9485C15.1868 19.8997 15.9143 19.7312 16.5506 19.4839C17.2081 19.2285 17.7652 18.8859 18.3208 18.3297C18.8771 17.7739 19.2187 17.2159 19.475 16.5584C19.7208 15.9224 19.8896 15.1955 19.9396 14.1313C19.9875 13.0646 20 12.7246 20 10.0088C20 7.29291 19.9875 6.95207 19.9396 5.8854C19.8896 4.8208 19.7208 4.09413 19.475 3.45829C19.2187 2.80057 18.8771 2.24265 18.3208 1.68681C17.7646 1.13055 17.2083 0.788884 16.55 0.533673C15.9125 0.286378 15.1854 0.117835 14.1208 0.0690845C13.0541 0.0205423 12.7145 0.00866699 9.99781 0.00866699H10.0009ZM9.10385 1.810
29077C9.3701 1.81035 9.66718 1.81077 10.0009 1.81077C12.671 1.81077 12.9874 1.82035 14.0418 1.86827C15.0168 1.91285 15.546 2.07577 15.8985 2.21265C16.3652 2.3939 16.6979 2.61057 17.0477 2.96057C17.3977 3.31058 17.6143 3.64391 17.796 4.11058C17.9329 4.46267 18.096 4.99184 18.1404 5.96685C18.1883 7.02103 18.1987 7.3377 18.1987 10.0065C18.1987 12.6753 18.1883 12.9919 18.1404 14.0461C18.0958 15.0211 17.9329 15.5503 17.796 15.9024C17.6148 16.369 17.3977 16.7013 17.0477 17.0511C16.6977 17.4011 16.3654 17.6178 15.8985 17.7991C15.5464 17.9366 15.0168 18.0991 14.0418 18.1436C12.9876 18.1916 12.671 18.202 10.0009 18.202C7.3307 18.202 7.01424 18.1916 5.96006 18.1436C4.98505 18.0986 4.45588 17.9357 4.10317 17.7989C3.6365 17.6176 3.30316 17.4009 2.95316 17.0509C2.60315 16.7009 2.38648 16.3684 2.20481 15.9015C2.06794 15.5495 1.90481 15.0203 1.86044 14.0453C1.81252 12.9911 1.80294 12.6744 1.80294 10.004C1.80294 7.33353 1.81252 7.01853 1.86044 5.96435C1.90502 4.98934 2.06794 4.46017 2.20481 4.10767C2.38607 3.641 2.60315 3.30766 2.95316 2.95766C3.30316 2.60765 3.6365 2.39098 4.10317 2.20931C4.45567 2.07181 4.98505 1.90931 5.96006 1.86452C6.88257 1.82285 7.24008 1.81035 9.10385 1.80827V1.81077ZM15.3389 3.4712C14.6764 3.4712 14.1389 4.00808 14.1389 4.6708C14.1389 5.33331 14.6764 5.87081 15.3389 5.87081C16.0014 5.87081 16.5389 5.33331 16.5389 4.6708C16.5389 4.00829 16.0014 3.47079 15.3389 3.47079V3.4712ZM10.0009 4.8733C7.16487 4.8733 4.86547 7.1727 4.86547 10.0088C4.86547 12.8448 7.16487 15.1432 10.0009 15.1432C12.837 15.1432 15.1356 12.8448 15.1356 10.0088C15.1356 7.1727 12.837 4.8733 10.0009 4.8733ZM10.0009 6.6754C11.8418 6.6754 13.3343 8.16771 13.3343 10.0088C13.3343 11.8496 11.8418 13.3421 10.0009 13.3421C8.15988 13.3421 6.66757 11.8496 6.66757 10.0088C6.66757 8.16771 8.15988 6.6754 10.0009 6.6754Z"></path></g><defs><clipPath id="clip0_14_12"><rect width="20" height="19.9994" fill="white" transform="translate(0 0.00866699)"></rect></clipPath></defs></svg></div></a><a href="https://www.linkedin.com/company/smartbear/" target="_blank" class="flex items-center"><span class="sr-only">Linkedin</span><div><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="fill-accent-1 hover:fill-neutral-1"><g clip-path="url(#clip0_4_202)"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.22222 20.0084H17.7778C19.0051 20.0084 20 19.0135 20 17.7862V2.23065C20 1.00335 19.0051 0.00842285 17.7778 0.00842285H2.22222C0.994923 0.00842285 0 1.00335 0 2.23065V17.7862C0 19.0135 0.994923 20.0084 2.22222 20.0084Z"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M17.2223 17.2307H14.2544V12.1757C14.2544 10.7898 13.7278 10.0153 12.6308 10.0153C11.4374 10.0153 10.814 10.8213 10.814 12.1757V17.2307H7.95376V7.60107H10.814V8.89818C10.814 8.89818 11.674 7.30687 13.7174 7.30687C15.76 7.30687 17.2223 8.55416 17.2223 11.1338V17.2307ZM4.54154 6.34015C3.56729 6.34015 2.77783 5.54449 2.77783 4.5632C2.77783 3.58191 3.56729 2.78625 4.54154 2.78625C5.51579 2.78625 6.30478 3.58191 6.30478 4.5632C6.30478 5.54449 5.51579 6.34015 4.54154 6.34015ZM3.06465 17.2307H6.04711V7.60107H3.06465V17.2307Z" fill="#212529"></path></g><defs><clipPath id="clip0_4_202"><rect width="20" height="20" fill="white" transform="translate(0 0.00842285)"></rect></clipPath></defs></svg></div></a><a href="https://x.com/smartbear" target="_blank" class="flex items-center"><span class="sr-only">X</span><div><svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg" class="fill-accent-1 hover:fill-neutral-1"><g clip-path="url(#clip0_4_206)"><path d="M11.9047 8.47667L19.3513 0H17.5873L11.1187 7.35867L5.956 0H0L7.80867 11.1287L0 20.0167H1.764L8.59067 12.244L14.044 20.0167H20M2.40067 1.30267H5.11067L17.586 18.778H14.8753"></path></g><defs><clipPath id="clip0_4_206"><rect width="20" height="20.0167" fill="white"></rect></clipPath></defs></svg></div></a><a href="https://www.youtube.com/user/SmartBearSoftware" target="_blank" class="flex items-center"><span class="sr-only">YouTube</span><div><svg width="20" height="14" viewBox="0 0 20 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="fill-accent-1 hover:fill-neutral-1"><g clip-path="url(#clip0_4_209)"><path d="M19.5819 2.19443C19.3514 1.33338 18.6747 0.656725 17.8137 0.426234C16.2546 0.00805677 10 0.00805664 10 0.00805664C10 0.00805664 3.74548 0.00805677 2.18637 0.426234C1.32533 0.656725 0.648669 1.33338 0.418177 2.19443C1.25176e-07 3.75354 0 7.00841 0 7.00841C0 7.00841 1.25176e-07 10.2633 0.418177 11.8224C0.648669 12.6835 1.32533 13.3601 2.18637 13.5906C3.74548 14.0088 10 14.0088 10 14.0088C10 14.0088 16.2546 14.0088 17.8137 13.5906C18.6747 13.3601 19.3514 12.6835 19.5819 11.8224C20.0001 10.2633 20.0001 7.00841 20.0001 7.00841C20.0001 7.00841 19.9984 3.75354 19.5819 2.19443Z"></path><path d="M7.99817 10.0084L13.1941 7.00873L7.99817 4.00903V10.0084Z" fill="#212529"></path></g><defs><clipPath id="clip0_4_209"><rect width="20" height="14.0007" fill="white" transform="translate(0 0.00805664)"></rect></clipPath></defs></svg></div></a></div><p class="mt-8 text-sm text-neutral-5 md:order-1 md:mt-0">© <!-- -->2026<!-- --> SmartBear Software. All Rights Reserved.</p></div></div></footer> </main> </body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.