PageSourceSearch

https://swagger.io/blog/

html swagger.io collected 2026-10-01 06:54:54 UTC 59,721 bytes, 290 lines download raw bytes

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 &amp; 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>&nbsp;</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&#x27;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="{&quot;base&quot;:[0,&quot;/blog&quot;]}" ssr="" client="only" opts="{&quot;name&quot;:&quot;PostsArchive&quot;,&quot;value&quot;:&quot;react&quot;}"></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.