CINXE.COM
Better Practices - Medium
<!DOCTYPE html><html xmlns:cc="http://creativecommons.org/ns#"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# medium-com: http://ogp.me/ns/fb/medium-com#"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=contain"><title>Better Practices - Medium</title><link rel="canonical" href="https://medium.com/better-practices"><link id="feedLink" rel="alternate" type="application/rss+xml" title="RSS" href="https://medium.com/feed/better-practices"><meta name="robots" content="index,follow"><meta name="title" content="Better Practices - Medium"><meta name="referrer" content="unsafe-url"><meta name="description" content="For individual engineers to the largest teams, Better Practices is intended to distill knowledge from the Postman community. This is a place to learn about modern software practices together! Read more: https://medium.com/better-practices/introducing-better-practices-e9cf14cf0c88."><meta name="keywords" content="API, SOFTWARE DEVELOPMENT, TESTING, DEVELOPER TOOLS, SOFTWARE ENGINEERING"><meta name="theme-color" content="#000000"><meta property="og:title" content="Better Practices – Medium"><meta property="twitter:title" content="Better Practices – Medium"><meta property="og:url" content="https://medium.com/better-practices"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*KRFQANUncaYZMQl1i0eXqg.png"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="For individual engineers to the largest teams, Better Practices is intended to distill knowledge from the Postman community. This is a place to learn about modern software practices together! Read more: https://medium.com/better-practices/introducing-better-practices-e9cf14cf0c88."><meta name="twitter:description" content="For individual engineers to the largest teams, Better Practices is intended to distill knowledge from the Postman community. This is a place to learn about modern software practices together! Read more: https://medium.com/better-practices/introducing-better-practices-e9cf14cf0c88."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*KRFQANUncaYZMQl1i0eXqg.png"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><meta property="medium-com:creator" content="https://medium.com/@postmanclient"><meta name="twitter:site" content="@Medium"><meta property="og:site_name" content="Medium"><meta name="twitter:app:name:iphone" content="Medium"><meta name="twitter:app:id:iphone" content="828256236"><meta name="twitter:app:url:iphone" content="medium://better-practices"><meta property="al:ios:app_name" content="Medium"><meta property="al:ios:app_store_id" content="828256236"><meta property="al:android:package" content="com.medium.reader"><meta property="al:android:app_name" content="Medium"><meta property="al:ios:url" content="medium://better-practices"><meta property="al:android:url" content="medium://better-practices"><meta property="al:web:url" content="https://medium.com/better-practices"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/better-practices" /><script type="application/ld+json">{"@context": "http://schema.org", "@graph": [{"@type": "WebSite", "url": "https:\/\/medium.com", "name": "Medium", "alternateName": "Medium is a community of readers and writers offering unique perspectives on ideas large and small."},{"@type": "Organization", "url": "https:\/\/medium.com\/better-practices", "name": "Better Practices"}]}</script><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-branding-base.ouwh4uMviI3QQWIjxRhkHA.12.css"><script>!function(n,e){var t,o,i,c=[],f={passive:!0,capture:!0},r=new Date,a="pointerup",u="pointercancel";function p(n,c){t||(t=c,o=n,i=new Date,w(e),s())}function s(){o>=0&&o<i-r&&(c.forEach(function(n){n(o,t)}),c=[])}function l(t){if(t.cancelable){var o=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){["click","mousedown","keydown","touchstart","pointerdown"].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);</script><script>document.domain = document.domain;</script><script>if (window.top !== window.self) window.location = 'about:blank';var OB_startTime = new Date().getTime(); var OB_loadErrors = []; function _onerror(e) { OB_loadErrors.push(e) }; if (document.addEventListener) document.addEventListener("error", _onerror, true); else if (document.attachEvent) document.attachEvent("onerror", _onerror); function _asyncScript(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = u; f.parentNode.insertBefore(s, f);}function _asyncStyles(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("link"); s.rel = "stylesheet"; s.href = u; f.parentNode.insertBefore(s, f); return s}(new Image()).src = "/_/stat?event=pixel.load&origin=" + encodeURIComponent(location.origin);</script><script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga("create", "G-7JY7T788PK", "auto", {"allowLinker": true, "legacyCookieDomain": window.location.hostname});ga("send", "pageview");</script><script async src="https://www.google-analytics.com/analytics.js"></script><script>(function () {var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; document.write("<style>section.section-image--fullBleed.is-backgrounded {padding-top: " + Math.round(1.1 * height) + "px;}section.section-image--fullScreen.is-backgrounded, section.section-image--coverFade.is-backgrounded {min-height: " + height + "px; padding-top: " + Math.round(0.5 * height) + "px;}.u-height100vh {height: " + height + "px !important;}.u-height110vh {height: " + Math.round(1.1 * height) + "px !important;}.u-minHeight100vh {min-height: " + height + "px !important;}.u-maxHeight100vh {max-height: " + height + "px !important;}section.section-image--coverFade {height: " + height + "px;}.section-aspectRatioViewportPlaceholder, .section-aspectRatioViewportCropPlaceholder {max-height: " + height + "px;}.section-aspectRatioViewportBottomSpacer, .section-aspectRatioViewportBottomPlaceholder {max-height: " + Math.round(0.5 * height) + "px;}.zoomable:before {top: " + (-1 * height) + "px; left: " + (-1 * width) + "px; padding: " + height + "px " + width + "px;}</style>");})()</script><!--[if lt IE 9]><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js"></script><![endif]--><link rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19" class="js-favicon"><link rel="apple-touch-icon" sizes="152x152" href="https://cdn-images-1.medium.com/fit/c/304/304/1*KRFQANUncaYZMQl1i0eXqg.png"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*KRFQANUncaYZMQl1i0eXqg.png"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*KRFQANUncaYZMQl1i0eXqg.png"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*KRFQANUncaYZMQl1i0eXqg.png"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg" color="#171717"></head><body itemscope class=" browser-ie os-windows v-unbound v-glyph v-glyph--m2-unbound-source-serif-pro is-noJs"><script>document.body.className = document.body.className.replace(/(^|\s)is-noJs(\s|$)/, "$1is-js$2")</script><div class="site-main" id="container"><div class="butterBar butterBar--error"></div><div class="surface"><div id="prerendered" class="screenContent"><div class="metabar u-clearfix js-metabar"><div class="branch-journeys-top"></div><div class="js-metabarMiddle metabar-inner u-marginAuto u-maxWidth1032 u-flexCenter u-justifyContentSpaceBetween u-height65 u-xs-height56 u-paddingHorizontal20"><div class="metabar-block u-flex1 u-flexCenter"><div class="js-metabarLogoLeft"><a href="https://medium.com/" data-log-event="home" class="siteNav-logo u-fillBlack u-flex0 u-flexCenter u-paddingTop0"><span class="svgIcon svgIcon--wordmarkMedium svgIcon--120x26px u-flex"><svg class="svgIcon-use" width="120" height="26" ><path d="M29.57 1.404l.036-.008V1.12h-7.27l-6.75 15.979-6.75-15.98H1.003v.278l.035.008c1.327.302 2 .752 2 2.374v18.993c0 1.623-.676 2.073-2.003 2.374L1 25.153v.279h5.315v-.278l-.035-.008c-1.327-.302-2-.751-2-2.374V4.88l8.67 20.552h.492l8.924-21.125V23.24c-.114 1.282-.782 1.677-1.983 1.95l-.036.009v.275h9.259V25.2l-.036-.008c-1.203-.274-1.886-.67-2-1.95l-.006-19.464h.006c0-1.622.674-2.072 2-2.374zm4.23 12.582c.15-3.412 1.367-5.875 3.41-5.918.629.01 1.157.219 1.568.62.872.852 1.282 2.634 1.219 5.298h-6.198zm-.092.962h10.85v-.046c-.03-2.61-.78-4.64-2.228-6.033-1.25-1.204-3.103-1.867-5.048-1.867h-.043c-1.01 0-2.248.246-3.13.693a7.316 7.316 0 00-2.623 2.086c-1.185 1.479-1.903 3.477-2.078 5.724a13.717 13.717 0 00-.04.755c-.004.195-.005.39-.001.587.117 5.087 2.846 9.153 7.692 9.153 4.254 0 6.73-3.132 7.348-7.336l-.312-.11c-1.085 2.259-3.034 3.628-5.252 3.461-3.028-.228-5.347-3.32-5.137-7.066m23.122 6.893c-.356.85-1.099 1.319-2.094 1.319-.995 0-1.905-.689-2.552-1.939-.694-1.342-1.06-3.24-1.06-5.487 0-4.678 1.445-7.704 3.68-7.704.937 0 1.674.468 2.026 1.284v12.527zm7.198 3.335c-1.327-.316-2-.787-2-2.492V0l-8.062 2.392v.293l.05-.004c1.111-.09 1.866.064 2.304.472.343.32.51.809.51 1.498v3.11C56.033 7.25 55.088 7 53.94 7c-2.326 0-4.453.987-5.986 2.779-1.599 1.867-2.444 4.42-2.444 7.38 0 5.287 2.584 8.84 6.43 8.84 2.25 0 4.06-1.242 4.888-3.336v2.811h7.233v-.29l-.035-.008zM70.94 3.085c0-1.65-1.236-2.896-2.875-2.896-1.632 0-2.908 1.272-2.908 2.896 0 1.624 1.278 2.896 2.908 2.896 1.64 0 2.875-1.245 2.875-2.896zm1.903 22.092c-1.327-.316-2-.787-2-2.492h-.006V7.055l-7.234 2.092v.284l.043.004c1.566.14 1.994.683 1.994 2.525v13.515h7.24v-.29l-.037-.008zm18.536 0c-1.327-.316-2-.787-2-2.492V7.055L82.49 9.078v.285l.04.004c1.28.136 1.65.71 1.65 2.56v9.88c-.426.85-1.227 1.356-2.196 1.39-1.573 0-2.439-1.07-2.439-3.012V7.055l-7.234 2.092v.284l.044.004c1.565.14 1.994.683 1.994 2.525v8.362a9.443 9.443 0 00.15 1.741l.13.57C75.243 24.845 76.848 26 79.362 26c2.129 0 3.996-1.328 4.818-3.405v2.885h7.233v-.291l-.034-.012zm28.102.298v-.291l-.035-.009c-1.44-.334-2.001-.964-2.001-2.248V12.295C117.445 8.98 115.597 7 112.5 7c-2.257 0-4.16 1.314-4.893 3.36-.582-2.168-2.257-3.36-4.734-3.36-2.175 0-3.88 1.156-4.612 3.11V7.056l-7.233 2.006v.286l.043.004c1.547.138 1.994.697 1.994 2.492v13.631h6.75v-.29l-.037-.01c-1.148-.271-1.519-.767-1.519-2.04V10.95c.304-.715.917-1.562 2.127-1.562 1.504 0 2.266 1.05 2.266 3.116v12.972h6.751v-.29l-.035-.01c-1.149-.271-1.52-.767-1.52-2.04V12.294a7.107 7.107 0 00-.095-1.21c.322-.777.97-1.696 2.23-1.696 1.524 0 2.265 1.02 2.265 3.116v12.972h7.233z"/></svg></span><span class="u-textScreenReader">Homepage</span></a></div><div class="u-paddingLeft10 u-sm-show r-paddingRight10"><a href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com/better-practices%3F~feature=LoMobileNavBar&~channel=ShowCollectionHome&~stage=m2">Open in app</a></div></div><div class="metabar-block u-flex0 u-flexCenter"><div class="u-flexCenter u-height65 u-xs-height56"><div class="buttonSet buttonSet--wide u-lineHeightInherit"><a class="button button--primary button--chromeless u-accentColor--buttonNormal is-inSiteNavBar u-xs-hide js-signInButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Fbetter-practices%3Fsource%3Duser_profile_page---blogroll-------------------6ab0af8002ff---------------&source=--------------------------nav_reg&operation=login" data-action="sign-in-prompt" data-redirect="https://medium.com/better-practices?source=user_profile_page---blogroll-------------------6ab0af8002ff---------------" data-action-source="--------------------------nav_reg">Sign in</a><a class="button button--primary button--withChrome u-accentColor--buttonNormal is-inSiteNavBar js-signUpButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Fbetter-practices%3Fsource%3Duser_profile_page---blogroll-------------------6ab0af8002ff---------------&source=--------------------------nav_reg&operation=register" data-action="sign-up-prompt" data-redirect="https://medium.com/better-practices?source=user_profile_page---blogroll-------------------6ab0af8002ff---------------" data-action-source="--------------------------nav_reg">Get started</a></div></div></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-height65 u-xs-height56"></div><div class="collectionHeader js-collectionHeaderContainer u-relative collectionHeader--layoutLarge collectionHeader--alignmentLeft collectionHeader--withLogo collectionHeader--withBackground collectionHeader--colorBehaviorBold collectionHeader--withNavigation collectionHeader--editorLayoutLogo is-modeView u-tintBgColor"><div class="collectionHeader-aspectRatioTable"><div class="collectionHeader-aspectRatioContent u-backgroundSizeCover js-collectionHeaderBackground" style="background-image: url("https://cdn-images-1.medium.com/max/2400/1*-GYfQtC8YTx0Pc5ZHP15Pw.png"); background-position: 45.357142857142854% 13.571428571428571% !important;"><div class="collectionHeader-overlayBackground u-height100vh"></div><header class="collectionHeader-heroAndInlineNav u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto u-foreground js-collectionHeader"><div class="collectionHeader-hero js-collectionHeaderHero u-clearfix u-imageSpectrum"><div class="collectionHeader-heroInner"><div class="collectionHeader-logo js-collectionHeaderLogo" style="max-width: 313px;"><a class="link u-baseColor--link" href="https://medium.com/better-practices" title="Go to Better Practices" aria-label="Go to Better Practices"><div class="u-relative u-marginAuto"><div style="padding-bottom: 74.56%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage" src="https://cdn-images-1.medium.com/max/626/1*Pu1GkYWY2UKlPgXLDgbwIg@2x.png" data-image-id="1*Pu1GkYWY2UKlPgXLDgbwIg@2x.png" data-width="625" data-height="466" /></div></a></div><div class="collectionHeader-nameAndDescription u-hide"><a class="link u-baseColor--link" href="https://medium.com/better-practices" title="Go to Better Practices" aria-label="Go to Better Practices"><h1 class="collectionHeader-name js-collectionName">Better Practices</h1></a><h2 class="collectionHeader-description js-collectionDescription">For individual engineers to the largest teams, Better Practices is intended to distill knowledge from the Postman community. This is a place to learn about modern software practices together! Read more: https://medium.com/better-practices/introducing-better-practices-e9cf14cf0c88</h2></div></div></div></header></div><div class="collectionHeader-aspectRatioCell"><div class="collectionHeader-aspectRatioFullWidth"></div></div></div><div class="collectionHeader-blockNav"><div class="u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto"><nav class="collectionHeader-nav u-clearfix js-collectionHeaderNav u-lineHeight40 u-overflowHiddenY u-tintSpectrum"><div class="buttonSet u-flex1 u-noWrap u-overflowX u-paddingBottom100 u-xs-marginRight15"><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/better-practices/tagged/software-development">Development</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/better-practices/tagged/testing">Testing</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/better-practices/tagged/documentation">Publishing</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/better-practices/tagged/devops">DevOps</a></li></div><div class="buttonSet u-textAlignRight u-marginLeft18 u-flex0 u-noWrap"><label class="button button--small button--chromeless button--withIcon button--withSvgIcon inputGroup u-sm-hide metabar-predictiveSearch u-baseColor--buttonNormal u-baseColor--placeholderNormal" title="Search"><span class="svgIcon svgIcon--search svgIcon--25px u-baseColor--iconLight"><svg class="svgIcon-use" width="25" height="25" ><path d="M20.067 18.933l-4.157-4.157a6 6 0 10-.884.884l4.157 4.157a.624.624 0 10.884-.884zM6.5 11c0-2.62 2.13-4.75 4.75-4.75S16 8.38 16 11s-2.13 4.75-4.75 4.75S6.5 13.62 6.5 11z"/></svg></span><input class="js-predictiveSearchInput textInput textInput--rounded textInput--darkText u-baseColor--textNormal textInput--transparent" type="search" placeholder="Search" required="true" data-collection-id="410f2fbc015d" /></label><a class="button button--light button--chromeless is-touchIconBlackPulse u-baseColor--buttonLight button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle" href="https://twitter.com/getpostman" title="Visit “Better Practices” on X" aria-label="Visit “Better Practices” on X" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--twitter svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M14.215 11.3l5.764-6.7h-1.366l-5.005 5.818L9.611 4.6H5l6.045 8.798L5 20.424h1.366l5.286-6.144 4.221 6.144h4.61L14.216 11.3zm-1.871 2.175l-.612-.876-4.874-6.97h2.098l3.933 5.625.613.876 5.112 7.312h-2.098l-4.172-5.966z" fill="#242424"/></svg></span></span></a><a class="button button--light button--chromeless is-touchIconBlackPulse u-baseColor--buttonLight button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle" href="//facebook.com/getpostman" title="Visit “Better Practices” on Facebook" aria-label="Visit “Better Practices” on Facebook" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--facebookFilled svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" ><path d="M21 12.646C21 7.65 16.97 3.6 12 3.6s-9 4.05-9 9.046a9.026 9.026 0 007.59 8.924v-6.376H8.395V12.64h2.193v-1.88c0-2.186 1.328-3.375 3.267-3.375.93 0 1.728.07 1.96.1V9.77H14.47c-1.055 0-1.26.503-1.26 1.242v1.63h2.517l-.33 2.554H13.21V21.6c4.398-.597 7.79-4.373 7.79-8.954"/></svg></span></span></a><button class="button button--primary button--smallest u-noUserSelect button--withChrome u-accentColor--buttonNormal js-relationshipButton is-smallPill" data-action="sign-up-prompt" data-sign-in-action="toggle-follow-collection" data-requires-token="true" data-redirect="https://medium.com/_/subscribe/collection/better-practices" data-action-source="pub_header----410f2fbc015d----------------------follow_pub" data-collection-id="410f2fbc015d"><span class="button-label js-buttonLabel">Follow</span></button></div></nav></div></div></div><div class="u-marginBottom40 js-collectionStream"><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight15 u-size8of12" data-source="collection_home---4------0-----------------------" data-post-id="8885a7601523" data-index="0"><div class="u-lineHeightBase postItem u-marginRight3"><a href="https://medium.com/better-practices/powering-home-automation-with-websocket-apis-8885a7601523?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/powering-home-automation-with-websocket-apis-8885a7601523?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height350 u-width100pct u-floatLeft u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/2000/0*SV-NQW6-Sz2D9Buh.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Powering home automation with WebSocket APIs</span></a></div></div><div class="col u-xs-marginBottom10 u-paddingLeft9 u-paddingRight12 u-paddingTop0 u-sm-paddingTop20 u-paddingBottom25 u-size4of12 u-xs-size12of12 u-marginBottom30"><a class="" href="https://medium.com/better-practices/powering-home-automation-with-websocket-apis-8885a7601523?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="8885a7601523"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp4 u-fontSize30 u-size12of12 u-xs-size12of12 u-xs-fontSize24">Powering home automation with WebSocket APIs</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Get started with the Home Assistant WebSocket API</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-07-06T17:04:32.168Z">Jul 6, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="3 min read"></span></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------1-----------------------" data-post-id="bace9cac42e1" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/get-started-using-google-cloud-apis-to-manage-cloud-infrastructure-bace9cac42e1?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/get-started-using-google-cloud-apis-to-manage-cloud-infrastructure-bace9cac42e1?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*vH0TBiRYXZVyT6zA9iuREQ.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Get started using Google Cloud APIs to manage cloud infrastructure</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/get-started-using-google-cloud-apis-to-manage-cloud-infrastructure-bace9cac42e1?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="bace9cac42e1"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Get started using Google Cloud APIs to manage cloud infrastructure</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">DevOps engineers and data engineers use APIs for many reasons, including to manage cloud infrastructure.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-06-28T19:03:34.988Z">Jun 28, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="3 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------2-----------------------" data-post-id="a0c7dde28bd4" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/boost-your-engineering-teams-velocity-with-smart-tool-investments-a0c7dde28bd4?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/boost-your-engineering-teams-velocity-with-smart-tool-investments-a0c7dde28bd4?source=collection_home---4------2-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*1k-mWxNYERonjiEzTLJT-Q.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Boost Your Engineering Team’s Velocity with Smart Tool Investments</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/boost-your-engineering-teams-velocity-with-smart-tool-investments-a0c7dde28bd4?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="a0c7dde28bd4"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Boost Your Engineering Team’s Velocity with Smart Tool Investments</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">A proactive approach for increasing your team’s efficiency and velocity using modern tools and services.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@shahar.davidson" data-action="show-user-card" data-action-value="fa5cf0bcd8ab" data-action-type="hover" data-user-id="fa5cf0bcd8ab" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/2*AVVXye9GEE2THCWfYgxL1g.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Shahar Davidson"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@shahar.davidson" data-action="show-user-card" data-action-value="fa5cf0bcd8ab" data-action-type="hover" data-user-id="fa5cf0bcd8ab" dir="auto">Shahar Davidson</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-04-26T16:35:38.305Z">Apr 26, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="4 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------3-----------------------" data-post-id="1e065fbbc29f" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/create-reusable-tests-and-scripts-with-openapi-reusable-components-1e065fbbc29f?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/create-reusable-tests-and-scripts-with-openapi-reusable-components-1e065fbbc29f?source=collection_home---4------3-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*crOBs2bpXWoeda4E.jpg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Create Reusable Tests and Scripts with OpenAPI Reusable Components</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/create-reusable-tests-and-scripts-with-openapi-reusable-components-1e065fbbc29f?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="1e065fbbc29f"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Create Reusable Tests and Scripts with OpenAPI Reusable Components</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Storing Postman scripts within reusable components in an OpenAPI definition</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-02-09T18:34:37.618Z">Feb 9, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div></div></section></div><div class="streamItem streamItem--section js-streamItem"><div class="u-marginBottom30 u-marginTop60 u-paddingLeft35"><header class="heading u-fontSize18 u-contentSansThin" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title heading-title--dark heading-title--lineHeightTight u-fontSize18 u-contentSansThin">Trending</span></div></div></header></div><div class="u-table u-width100pct u-height350 u-xs-minHeight350"><div class="u-tableCell u-sm-size12of12 u-sm-block u-overflowHidden js-trackPostPresentation u-imageSpectrum u-height350 u-xs-minHeight350" data-source="collection_home---1------0-----------------------" data-post-id="b32da63f4f94" data-index="0"><div class="u-baseColor--textDark u-height350 u-xs-minHeight350"><a href="https://medium.com/better-practices/set-up-a-websockets-server-in-node-js-b32da63f4f94?source=collection_home---1------0-----------------------" data-post-id="b32da63f4f94" data-source="collection_home---1------0-----------------------" class="u-block u-sizeFull u-backgroundSizeCover u-backgroundOriginBorderBox u-borderLighter u-borderBox u-backgroundColorGrayLight"style="background-image: url("https://cdn-images-1.medium.com/max/2400/gradv/29/81/30/darken/25/0*6DO93c3_KL111OXr.jpg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Set Up a WebSockets Server in Node.js</span></a><div class="u-relative"><div class="u-absolute u-left0 u-bottom0 u-marginVertical30 u-marginHorizontal40 u-xs-marginHorizontal20 u-right40Percent u-md-right0"><a class="" href="https://medium.com/better-practices/set-up-a-websockets-server-in-node-js-b32da63f4f94?source=collection_home---1------0-----------------------" data-action-source="collection_home---1------0-----------------------" data-post-id="b32da63f4f94"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="">Set Up a WebSockets Server in Node.js</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-hide">And use Postman to send and receive messages across the WebSocket connection</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-02-01T15:55:19.106Z">Feb 1, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div></div></div><div class="u-tableCell u-sm-size12of12 u-sm-block u-overflowHidden js-trackPostPresentation u-imageSpectrum u-height350 u-xs-height250 u-width40pct " data-source="collection_home---1------1-----------------------" data-post-id="1a8b08d79fca" data-index="1"><div class="u-baseColor--textDark u-height350 u-xs-height250"><a href="https://medium.com/better-practices/postman-essentials-exploring-the-collection-format-1a8b08d79fca?source=collection_home---1------1-----------------------" data-post-id="1a8b08d79fca" data-source="collection_home---1------1-----------------------" class="u-block u-sizeFull u-backgroundSizeCover u-backgroundOriginBorderBox u-borderLighter u-borderBox u-backgroundColorGrayLight"style="background-image: url("https://cdn-images-1.medium.com/max/2400/gradv/29/81/30/darken/25/0*0Tkt-B9ruk43Bzhx.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Postman Essentials: Exploring the Collection Format</span></a><div class="u-relative"><div class="u-absolute u-left0 u-bottom0 u-marginVertical30 u-marginHorizontal40 u-xs-marginHorizontal20"><a class="" href="https://medium.com/better-practices/postman-essentials-exploring-the-collection-format-1a8b08d79fca?source=collection_home---1------1-----------------------" data-action-source="collection_home---1------1-----------------------" data-post-id="1a8b08d79fca"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="">Postman Essentials: Exploring the Collection Format</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-hide">If you’re one of the 20 million people who use Postman, then you’ve worked with Postman Collections in one way or another. Collections are…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@gbahdeyboh" data-action="show-user-card" data-action-value="c469aa093a35" data-action-type="hover" data-user-id="c469aa093a35" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*dDSD401l67qtsFUqiwwPuA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Gbadebo Bello"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@gbahdeyboh" data-action="show-user-card" data-action-value="c469aa093a35" data-action-type="hover" data-user-id="c469aa093a35" dir="auto">Gbadebo Bello</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2022-09-29T07:05:47.638Z">Sep 28, 2022</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div></div></div></div></div><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><header class="heading heading--borderedBottom u-fontSize18 u-contentSansThin" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title heading-title--dark heading-title--lineHeightTight u-fontSize18 u-contentSansThin">Latest</span></div></div></header><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight15 u-size8of12" data-source="collection_home---4------0-----------------------" data-post-id="142aab534e6b" data-index="0"><div class="u-lineHeightBase postItem u-marginRight3"><a href="https://medium.com/better-practices/to-build-an-sdk-or-not-to-build-that-is-the-question-142aab534e6b?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/to-build-an-sdk-or-not-to-build-that-is-the-question-142aab534e6b?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height350 u-width100pct u-floatLeft u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/2000/0*ZYHU9F8LrS6ybtJK"); background-position: 50% 50% !important;"><span class="u-textScreenReader">To Build (an SDK), or not to Build — that is the question!</span></a></div></div><div class="col u-xs-marginBottom10 u-paddingLeft9 u-paddingRight12 u-paddingTop0 u-sm-paddingTop20 u-paddingBottom25 u-size4of12 u-xs-size12of12 u-marginBottom30"><a class="" href="https://medium.com/better-practices/to-build-an-sdk-or-not-to-build-that-is-the-question-142aab534e6b?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="142aab534e6b"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp4 u-fontSize30 u-size12of12 u-xs-size12of12 u-xs-fontSize24">To Build (an SDK), or not to Build — that is the question!</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Are you considering building an SDK for your SaaS API? Here are essential considerations to keep in mind before creating an SDK.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@shahar.davidson" data-action="show-user-card" data-action-value="fa5cf0bcd8ab" data-action-type="hover" data-user-id="fa5cf0bcd8ab" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/2*AVVXye9GEE2THCWfYgxL1g.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Shahar Davidson"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@shahar.davidson" data-action="show-user-card" data-action-value="fa5cf0bcd8ab" data-action-type="hover" data-user-id="fa5cf0bcd8ab" dir="auto">Shahar Davidson</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2022-07-31T17:10:48.205Z">Jul 31, 2022</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------1-----------------------" data-post-id="5011c9dfb0fa" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/how-complex-can-authorization-get-5011c9dfb0fa?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/how-complex-can-authorization-get-5011c9dfb0fa?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*on8uU-OVzSFIyLB2gRk2nw.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">How complex can Authorization get?</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/how-complex-can-authorization-get-5011c9dfb0fa?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="5011c9dfb0fa"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How complex can Authorization get?</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Builds on the Authorization component of Identity and Access Management system from zero to how systems implement today</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@kmmanoj" data-action="show-user-card" data-action-value="d5ebb98cbc1b" data-action-type="hover" data-user-id="d5ebb98cbc1b" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*4ET5y59IcnroicTaj3w9Eg.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Manoj Vignesh K M"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@kmmanoj" data-action="show-user-card" data-action-value="d5ebb98cbc1b" data-action-type="hover" data-user-id="d5ebb98cbc1b" dir="auto">Manoj Vignesh K M</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2022-03-20T13:06:13.437Z">Mar 20, 2022</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------2-----------------------" data-post-id="99aba45a572b" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/how-to-build-a-jamstack-application-in-postman-99aba45a572b?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/how-to-build-a-jamstack-application-in-postman-99aba45a572b?source=collection_home---4------2-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*KSMBMo2Mzyrqgdqk.jpg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">How to build a Jamstack application in Postman</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/how-to-build-a-jamstack-application-in-postman-99aba45a572b?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="99aba45a572b"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How to build a Jamstack application in Postman</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Learn to JAM with scripts, mock servers, and the visualizer</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2022-01-31T16:03:21.941Z">Jan 31, 2022</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------3-----------------------" data-post-id="c7b15c03f306" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/dynamically-create-custom-environments-with-code-c7b15c03f306?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/dynamically-create-custom-environments-with-code-c7b15c03f306?source=collection_home---4------3-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*et303LkbvbCYvq_wrBFO_w.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Dynamically create custom environments with code</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/dynamically-create-custom-environments-with-code-c7b15c03f306?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="c7b15c03f306"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Dynamically create custom environments with code</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Reduce time to first call (TTFC) for your public API via Run in Postman</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2021-12-01T23:56:23.534Z">Dec 1, 2021</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------4-----------------------" data-post-id="8476bd6fa51b" data-index="4"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/better-practices-for-git-version-control-in-postman-8476bd6fa51b?source=collection_home---4------4-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/better-practices-for-git-version-control-in-postman-8476bd6fa51b?source=collection_home---4------4-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*l7YRcpv0_lfh6iBB.jpg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Better Practices for Git Version Control in Postman</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/better-practices-for-git-version-control-in-postman-8476bd6fa51b?source=collection_home---4------4-----------------------" data-action-source="collection_home---4------4-----------------------" data-post-id="8476bd6fa51b"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Better Practices for Git Version Control in Postman</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Manage collaboration within your team and community so that you don’t release breaking changes</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2021-11-03T16:32:05.000Z">Nov 3, 2021</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------5-----------------------" data-post-id="4acadab0f003" data-index="5"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/how-and-why-postman-engineering-uses-foundation-teams-4acadab0f003?source=collection_home---4------5-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/how-and-why-postman-engineering-uses-foundation-teams-4acadab0f003?source=collection_home---4------5-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*KDEdyxVXhd1fkGF4.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">How (and Why) Postman Engineering Uses Foundation Teams</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/how-and-why-postman-engineering-uses-foundation-teams-4acadab0f003?source=collection_home---4------5-----------------------" data-action-source="collection_home---4------5-----------------------" data-post-id="4acadab0f003"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How (and Why) Postman Engineering Uses Foundation Teams</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Postman engineering structure: why foundation teams exist and how we are envisioning their future</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@shubham-bhargav" data-action="show-user-card" data-action-value="da19aa755173" data-action-type="hover" data-user-id="da19aa755173" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*vbnk7teU9-ridG836x35eA.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Shubham Bhargav"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@shubham-bhargav" data-action="show-user-card" data-action-value="da19aa755173" data-action-type="hover" data-user-id="da19aa755173" dir="auto">Shubham Bhargav</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2021-10-11T23:08:05.407Z">Oct 11, 2021</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------6-----------------------" data-post-id="62ac3959de44" data-index="6"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/the-most-important-api-metric-is-time-to-first-call-62ac3959de44?source=collection_home---4------6-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/the-most-important-api-metric-is-time-to-first-call-62ac3959de44?source=collection_home---4------6-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*k3ucbwWRlCQzg4T6DkACZw.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">The most important API metric is time to first call</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/the-most-important-api-metric-is-time-to-first-call-62ac3959de44?source=collection_home---4------6-----------------------" data-action-source="collection_home---4------6-----------------------" data-post-id="62ac3959de44"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">The most important API metric is time to first call</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Invest in TTFC to expand your potential developer base</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2021-07-19T20:43:41.304Z">Jul 19, 2021</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------7-----------------------" data-post-id="af904a74d32b" data-index="7"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/negative-testing-for-more-resilient-apis-af904a74d32b?source=collection_home---4------7-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/negative-testing-for-more-resilient-apis-af904a74d32b?source=collection_home---4------7-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*zrBVUnuGDVntEeip-SZxKA.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Negative testing for more resilient APIs</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/negative-testing-for-more-resilient-apis-af904a74d32b?source=collection_home---4------7-----------------------" data-action-source="collection_home---4------7-----------------------" data-post-id="af904a74d32b"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Negative testing for more resilient APIs</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Unhappy path test cases to ensure proper input validation and error handling</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2021-05-27T21:10:34.498Z">May 27, 2021</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------8-----------------------" data-post-id="cdc7da7759ca" data-index="8"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/how-to-use-postman-monitors-to-schedule-circleci-pipelines-cdc7da7759ca?source=collection_home---4------8-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/how-to-use-postman-monitors-to-schedule-circleci-pipelines-cdc7da7759ca?source=collection_home---4------8-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*sPgF7BtfG-Vc11TXnDvEMg.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">How to Use Postman Monitors to Schedule CircleCI Pipelines</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/how-to-use-postman-monitors-to-schedule-circleci-pipelines-cdc7da7759ca?source=collection_home---4------8-----------------------" data-action-source="collection_home---4------8-----------------------" data-post-id="cdc7da7759ca"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How to Use Postman Monitors to Schedule CircleCI Pipelines</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Problems and solutions when working with scheduled pipelines</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@hayk-sardaryan" data-action="show-user-card" data-action-value="b0dd739a6a15" data-action-type="hover" data-user-id="b0dd739a6a15" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*nubu4aTW_Ug4t969xoW80Q.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Hayk Sardaryan"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@hayk-sardaryan" data-action="show-user-card" data-action-value="b0dd739a6a15" data-action-type="hover" data-user-id="b0dd739a6a15" dir="auto">Hayk Sardaryan</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2021-05-18T17:02:21.000Z">May 18, 2021</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------9-----------------------" data-post-id="7f62d2276b62" data-index="9"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/problem-spreadsheets-solution-specifications-7f62d2276b62?source=collection_home---4------9-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/problem-spreadsheets-solution-specifications-7f62d2276b62?source=collection_home---4------9-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*NpSDTqC_LlpZ0pgT"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Problem: Spreadsheets. Solution: Specifications</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/problem-spreadsheets-solution-specifications-7f62d2276b62?source=collection_home---4------9-----------------------" data-action-source="collection_home---4------9-----------------------" data-post-id="7f62d2276b62"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Problem: Spreadsheets. Solution: Specifications</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">This is a story inspired by true events, about a team and the everyday struggles they faced while building an API defined by spreadsheets</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@meenakshi-dhanani" data-action="show-user-card" data-action-value="3b9502d26b05" data-action-type="hover" data-user-id="3b9502d26b05" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*9OxTvpbSSXNZG3jB_wcerg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Meenakshi Dhanani"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@meenakshi-dhanani" data-action="show-user-card" data-action-value="3b9502d26b05" data-action-type="hover" data-user-id="3b9502d26b05" dir="auto">Meenakshi Dhanani</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2021-04-22T17:25:22.000Z">Apr 22, 2021</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------10-----------------------" data-post-id="d2269a025ae6" data-index="10"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/how-and-why-postman-created-a-data-driven-hiring-process-d2269a025ae6?source=collection_home---4------10-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/how-and-why-postman-created-a-data-driven-hiring-process-d2269a025ae6?source=collection_home---4------10-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*Mx49VRO74rbSp8Kb.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">How (and Why) Postman Created a Data-Driven Hiring Process</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/how-and-why-postman-created-a-data-driven-hiring-process-d2269a025ae6?source=collection_home---4------10-----------------------" data-action-source="collection_home---4------10-----------------------" data-post-id="d2269a025ae6"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How (and Why) Postman Created a Data-Driven Hiring Process</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">An effective hiring process is one of the most crucial parts of scaling an organization. Especially when a company scales at least 10…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@shubham-bhargav" data-action="show-user-card" data-action-value="da19aa755173" data-action-type="hover" data-user-id="da19aa755173" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*vbnk7teU9-ridG836x35eA.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Shubham Bhargav"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@shubham-bhargav" data-action="show-user-card" data-action-value="da19aa755173" data-action-type="hover" data-user-id="da19aa755173" dir="auto">Shubham Bhargav</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2021-02-11T20:49:57.000Z">Feb 11, 2021</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------11-----------------------" data-post-id="15c8807f6393" data-index="11"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/how-postman-engineering-handles-a-million-concurrent-connections-15c8807f6393?source=collection_home---4------11-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/how-postman-engineering-handles-a-million-concurrent-connections-15c8807f6393?source=collection_home---4------11-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*YzAN-PbW3j9aDNOWCV0KJA.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">How Postman Engineering handles a million concurrent connections</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/how-postman-engineering-handles-a-million-concurrent-connections-15c8807f6393?source=collection_home---4------11-----------------------" data-action-source="collection_home---4------11-----------------------" data-post-id="15c8807f6393"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How Postman Engineering handles a million concurrent connections</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">The Server Foundation team at Postman shares the origin story of the Bifrost websocket gateway</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2020-12-22T18:42:11.000Z">Dec 22, 2020</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------12-----------------------" data-post-id="b6f302a67426" data-index="12"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/kubernetes-tutorial-b6f302a67426?source=collection_home---4------12-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/kubernetes-tutorial-b6f302a67426?source=collection_home---4------12-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*s4XwU_oTqRSiJBmS.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Kubernetes Tutorial: Your Complete Guide to Deploying an App on AWS with Postman</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/kubernetes-tutorial-b6f302a67426?source=collection_home---4------12-----------------------" data-action-source="collection_home---4------12-----------------------" data-post-id="b6f302a67426"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Kubernetes Tutorial: Your Complete Guide to Deploying an App on AWS with Postman</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Use Postman to learn Kubernetes and deploy an app on an AWS cluster</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@meenakshi-dhanani" data-action="show-user-card" data-action-value="3b9502d26b05" data-action-type="hover" data-user-id="3b9502d26b05" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*9OxTvpbSSXNZG3jB_wcerg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Meenakshi Dhanani"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@meenakshi-dhanani" data-action="show-user-card" data-action-value="3b9502d26b05" data-action-type="hover" data-user-id="3b9502d26b05" dir="auto">Meenakshi Dhanani</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2020-12-18T20:07:20.461Z">Dec 18, 2020</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="13 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------13-----------------------" data-post-id="1ef992192f15" data-index="13"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/the-good-documentation-checklist-1ef992192f15?source=collection_home---4------13-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/the-good-documentation-checklist-1ef992192f15?source=collection_home---4------13-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*A_0pbiqSRM3cewi6FXanQw.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">The Good Documentation Checklist</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/the-good-documentation-checklist-1ef992192f15?source=collection_home---4------13-----------------------" data-action-source="collection_home---4------13-----------------------" data-post-id="1ef992192f15"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">The Good Documentation Checklist</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">See how you measure up to these nine better practices for Postman documentation</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2020-11-02T23:49:48.373Z">Nov 2, 2020</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------14-----------------------" data-post-id="662707e0ef9e" data-index="14"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/the-postman-data-teams-hub-and-spoke-model-662707e0ef9e?source=collection_home---4------14-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/the-postman-data-teams-hub-and-spoke-model-662707e0ef9e?source=collection_home---4------14-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*SMEz72BIytH9K7cCLE1Qtw.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">The Postman Data Team’s Hub-and-Spoke Model</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/the-postman-data-teams-hub-and-spoke-model-662707e0ef9e?source=collection_home---4------14-----------------------" data-action-source="collection_home---4------14-----------------------" data-post-id="662707e0ef9e"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">The Postman Data Team’s Hub-and-Spoke Model</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">The structure of a team is crucial to its success. Structure helps us determine the various communication patterns that enable a team to…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@shubham-bhargav" data-action="show-user-card" data-action-value="da19aa755173" data-action-type="hover" data-user-id="da19aa755173" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*vbnk7teU9-ridG836x35eA.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Shubham Bhargav"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@shubham-bhargav" data-action="show-user-card" data-action-value="da19aa755173" data-action-type="hover" data-user-id="da19aa755173" dir="auto">Shubham Bhargav</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2020-08-31T23:48:59.369Z">Aug 31, 2020</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------15-----------------------" data-post-id="6aec096dc9bf" data-index="15"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/how-postman-does-data-democratization-6aec096dc9bf?source=collection_home---4------15-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/how-postman-does-data-democratization-6aec096dc9bf?source=collection_home---4------15-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*RVPRxqz2VUuY7NGXSXzmtw.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">How Postman Does Data Democratization</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/how-postman-does-data-democratization-6aec096dc9bf?source=collection_home---4------15-----------------------" data-action-source="collection_home---4------15-----------------------" data-post-id="6aec096dc9bf"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How Postman Does Data Democratization</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">A story from the Postman Data team about decentralization, breaking down silos, and sublinear scaling</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@shubham-bhargav" data-action="show-user-card" data-action-value="da19aa755173" data-action-type="hover" data-user-id="da19aa755173" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*vbnk7teU9-ridG836x35eA.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Shubham Bhargav"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@shubham-bhargav" data-action="show-user-card" data-action-value="da19aa755173" data-action-type="hover" data-user-id="da19aa755173" dir="auto">Shubham Bhargav</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2020-08-19T20:14:36.355Z">Aug 19, 2020</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="11 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------16-----------------------" data-post-id="aa026a3d682d" data-index="16"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/how-postman-engineering-does-microservices-aa026a3d682d?source=collection_home---4------16-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/how-postman-engineering-does-microservices-aa026a3d682d?source=collection_home---4------16-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*7j-JcmBvamEYqONLIzUQKg.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">How Postman Engineering does microservices</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/how-postman-engineering-does-microservices-aa026a3d682d?source=collection_home---4------16-----------------------" data-action-source="collection_home---4------16-----------------------" data-post-id="aa026a3d682d"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How Postman Engineering does microservices</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">A microservices update about domain-driven squads, CDC testing, and happily ever after</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2020-07-20T22:51:09.320Z">Jul 20, 2020</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------17-----------------------" data-post-id="43d6128ff8d5" data-index="17"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/serverless-functions-the-fast-way-43d6128ff8d5?source=collection_home---4------17-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/serverless-functions-the-fast-way-43d6128ff8d5?source=collection_home---4------17-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*5ggKeRrQYM59VutL907FaQ.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Serverless Functions the Fast Way</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/serverless-functions-the-fast-way-43d6128ff8d5?source=collection_home---4------17-----------------------" data-action-source="collection_home---4------17-----------------------" data-post-id="43d6128ff8d5"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Serverless Functions the Fast Way</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Learn what they are, and how to create and deploy them in minutes with Netlify Functions</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@jlengstorf" data-action="show-user-card" data-action-value="6a98eb806571" data-action-type="hover" data-user-id="6a98eb806571" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*2HtRupxBOVL67OVfgMBTdg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Jason Lengstorf"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@jlengstorf" data-action="show-user-card" data-action-value="6a98eb806571" data-action-type="hover" data-user-id="6a98eb806571" dir="auto">Jason Lengstorf</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2020-06-23T21:13:28.884Z">Jun 23, 2020</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="9 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------18-----------------------" data-post-id="5d13eff44761" data-index="18"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/graphing-covid-time-series-data-using-chart-js-and-postman-5d13eff44761?source=collection_home---4------18-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/graphing-covid-time-series-data-using-chart-js-and-postman-5d13eff44761?source=collection_home---4------18-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*YrWv1YwhYwZ04tceaKmFGw.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Graphing COVID time series data using Chart.js and Postman</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/graphing-covid-time-series-data-using-chart-js-and-postman-5d13eff44761?source=collection_home---4------18-----------------------" data-action-source="collection_home---4------18-----------------------" data-post-id="5d13eff44761"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Graphing COVID time series data using Chart.js and Postman</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Learn to visualize API and other data using Postman’s visualizer</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2020-03-31T05:57:07.252Z">Mar 30, 2020</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="9 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------19-----------------------" data-post-id="836826231280" data-index="19"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/ai-apis-what-are-they-and-how-to-use-them-836826231280?source=collection_home---4------19-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/ai-apis-what-are-they-and-how-to-use-them-836826231280?source=collection_home---4------19-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*2kFG0tq_Bg-L4oisfkj7gQ.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">AI APIs: What are they and how to use them</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/ai-apis-what-are-they-and-how-to-use-them-836826231280?source=collection_home---4------19-----------------------" data-action-source="collection_home---4------19-----------------------" data-post-id="836826231280"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">AI APIs: What are they and how to use them</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">A set of better practices for Artificial Intelligence APIs</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@arlemi" data-action="show-user-card" data-action-value="5c3e09856100" data-action-type="hover" data-user-id="5c3e09856100" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/2*ZwLwpvlsWIBDn1IiaSW36A.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Arlemi"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@arlemi" data-action="show-user-card" data-action-value="5c3e09856100" data-action-type="hover" data-user-id="5c3e09856100" dir="auto">Arlemi</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2020-02-25T22:41:45.020Z">Feb 25, 2020</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------20-----------------------" data-post-id="e3f0bae48456" data-index="20"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/accelerate-growth-conversions-with-these-key-developer-onboarding-strategies-e3f0bae48456?source=collection_home---4------20-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/accelerate-growth-conversions-with-these-key-developer-onboarding-strategies-e3f0bae48456?source=collection_home---4------20-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*bTRF8GkenTRgc-A4yGpA9w.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">How to Win at Developer Adoption When You Only Have A Few Minutes to Impress</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/accelerate-growth-conversions-with-these-key-developer-onboarding-strategies-e3f0bae48456?source=collection_home---4------20-----------------------" data-action-source="collection_home---4------20-----------------------" data-post-id="e3f0bae48456"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How to Win at Developer Adoption When You Only Have A Few Minutes to Impress</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Accelerate growth & conversions with these key developer onboarding strategies</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@jamesmessinger" data-action="show-user-card" data-action-value="7cc4c4e5ca55" data-action-type="hover" data-user-id="7cc4c4e5ca55" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/2*Y8_SXze9mYr99gtxSI08tA.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of James Messinger"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@jamesmessinger" data-action="show-user-card" data-action-value="7cc4c4e5ca55" data-action-type="hover" data-user-id="7cc4c4e5ca55" dir="auto">James Messinger</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2020-02-14T00:36:50.253Z">Feb 13, 2020</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------21-----------------------" data-post-id="d87588ac874" data-index="21"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/api-specifications-d87588ac874?source=collection_home---4------21-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/api-specifications-d87588ac874?source=collection_home---4------21-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*RSb13ih-eWr9crmpmFKVxw.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Bringing law and order to APIs with OpenAPI Specifications</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/api-specifications-d87588ac874?source=collection_home---4------21-----------------------" data-action-source="collection_home---4------21-----------------------" data-post-id="d87588ac874"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Bringing law and order to APIs with OpenAPI Specifications</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">A better way to build and manage APIs using schemas, descriptions, and style guides</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-11-15T19:17:07.617Z">Nov 15, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="11 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------22-----------------------" data-post-id="df713eb9788c" data-index="22"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/ui-testing-with-postman-df713eb9788c?source=collection_home---4------22-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/ui-testing-with-postman-df713eb9788c?source=collection_home---4------22-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*faIUHCRXbg7lDwPHiWHZiA.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">UI Testing with Postman</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/ui-testing-with-postman-df713eb9788c?source=collection_home---4------22-----------------------" data-action-source="collection_home---4------22-----------------------" data-post-id="df713eb9788c"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">UI Testing with Postman</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Postman is a tool commonly used to work with APIs. It provides an easy way to make HTTP calls and run scripts during various phases of the…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@ankit-m" data-action="show-user-card" data-action-value="6d7cc8aa9337" data-action-type="hover" data-user-id="6d7cc8aa9337" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*YY1NowQPJHR6sOmecDpI_Q.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Ankit Muchhala"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@ankit-m" data-action="show-user-card" data-action-value="6d7cc8aa9337" data-action-type="hover" data-user-id="6d7cc8aa9337" dir="auto">Ankit Muchhala</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-11-01T16:28:46.936Z">Nov 1, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------23-----------------------" data-post-id="d3ef238ec328" data-index="23"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/chaos-d3ef238ec328?source=collection_home---4------23-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/chaos-d3ef238ec328?source=collection_home---4------23-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*Yeu19v1w20PpePBBPISaJQ.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Learn how your Kubernetes clusters respond to failure using Gremlin and Grafana</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/chaos-d3ef238ec328?source=collection_home---4------23-----------------------" data-action-source="collection_home---4------23-----------------------" data-post-id="d3ef238ec328"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Learn how your Kubernetes clusters respond to failure using Gremlin and Grafana</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Building resilient APIs with chaos engineering</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KdCZi31V8ANQezzWiDQfXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joyce Lin"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@joycelin-codes" data-action="show-user-card" data-action-value="8e51cb7fb823" data-action-type="hover" data-user-id="8e51cb7fb823" dir="auto">Joyce Lin</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-08-20T18:35:29.910Z">Aug 20, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="13 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------24-----------------------" data-post-id="135c62bca7d7" data-index="24"><div class="u-lineHeightBase postItem"><a href="https://medium.com/better-practices/git-hooks-for-automation-135c62bca7d7?source=collection_home---4------24-----------------------" data-action="open-post" data-action-value="https://medium.com/better-practices/git-hooks-for-automation-135c62bca7d7?source=collection_home---4------24-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*qbm_r1myYrM2iYnj"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Elevate your automation game by using Git Hooks</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/better-practices/git-hooks-for-automation-135c62bca7d7?source=collection_home---4------24-----------------------" data-action-source="collection_home---4------24-----------------------" data-post-id="135c62bca7d7"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Elevate your automation game by using Git Hooks</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Automatically consume APIs and perform behind-the-scenes actions with your everyday Git commands</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@matt_b." data-action="show-user-card" data-action-value="d74f4b51eb4f" data-action-type="hover" data-user-id="d74f4b51eb4f" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/2*ZjMXONd54ecmLX8ybJCzgg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Matt Ball"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@matt_b." data-action="show-user-card" data-action-value="d74f4b51eb4f" data-action-type="hover" data-user-id="d74f4b51eb4f" dir="auto">Matt Ball</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-08-15T19:46:03.605Z">Aug 15, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div></div></section></div></div><style class="js-collectionStyle"> .u-accentColor--borderLight {border-color: #3D92AE !important;} .u-accentColor--borderNormal {border-color: #3D92AE !important;} .u-accentColor--borderDark {border-color: #3C7D93 !important;} .u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #3D92AE !important;} .u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #3D92AE !important;} .u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #3C7D93 !important;} .u-accentColor--textNormal {color: #3C7D93 !important;} .u-accentColor--hoverTextNormal:hover {color: #3C7D93 !important;} .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #3A7285 !important;} .u-accentColor--textDark {color: #3A7285 !important;} .u-accentColor--backgroundLight {background-color: #3D92AE !important;} .u-accentColor--backgroundNormal {background-color: #3D92AE !important;} .u-accentColor--backgroundDark {background-color: #3C7D93 !important;} .u-accentColor--buttonDark {border-color: #3C7D93 !important; color: #3A7285 !important;} .u-accentColor--buttonDark:hover {border-color: #3A7285 !important;} .u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #3C7D93 !important; fill: #3C7D93 !important;} .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #3D92AE !important; color: #3C7D93 !important;} .u-accentColor--buttonNormal:hover {border-color: #3C7D93 !important;} .u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #3D92AE !important; fill: #3D92AE !important;} .u-accentColor--buttonNormal.button--filled .icon:before,.u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-accentColor--buttonDark.button--filled,.u-accentColor--buttonDark.button--withChrome.is-active,.u-accentColor--fillWhenActive.is-active {background-color: #3C7D93 !important; border-color: #3C7D93 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: #3D92AE !important; border-color: #3D92AE !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .postArticle.is-withAccentColors .markup--user,.postArticle.is-withAccentColors .markup--query {color: #3C7D93 !important;}.u-tintBgColor {background-color: rgba(88, 170, 199, 1) !important;}.u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(88, 170, 199, 1) 0%, rgba(88, 170, 199, 0) 100%) !important;}.u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(88, 170, 199, 0) 0%, rgba(88, 170, 199, 1) 100%) !important;} .u-tintSpectrum .u-baseColor--borderLight {border-color: #AED8E9 !important;} .u-tintSpectrum .u-baseColor--borderNormal {border-color: #CBE9F5 !important;} .u-tintSpectrum .u-baseColor--borderDark {border-color: #E8FAFF !important;} .u-tintSpectrum .u-baseColor--iconLight .svgIcon,.u-tintSpectrum .u-baseColor--iconLight.svgIcon {fill: #AED8E9 !important;} .u-tintSpectrum .u-baseColor--iconNormal .svgIcon,.u-tintSpectrum .u-baseColor--iconNormal.svgIcon {fill: #CBE9F5 !important;} .u-tintSpectrum .u-baseColor--iconDark .svgIcon,.u-tintSpectrum .u-baseColor--iconDark.svgIcon {fill: #E8FAFF !important;} .u-tintSpectrum .u-baseColor--textNormal {color: #CBE9F5 !important;} .u-tintSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: #F5FFFF !important;} .u-tintSpectrum .u-baseColor--textDark {color: #F5FFFF !important;} .u-tintSpectrum .u-baseColor--textDarker {color: #F5FFFF !important;} .u-tintSpectrum .u-baseColor--backgroundLight {background-color: #AED8E9 !important;} .u-tintSpectrum .u-baseColor--backgroundNormal {background-color: #CBE9F5 !important;} .u-tintSpectrum .u-baseColor--backgroundDark {background-color: #E8FAFF !important;} .u-tintSpectrum .u-baseColor--buttonLight {border-color: #AED8E9 !important; color: #AED8E9 !important;} .u-tintSpectrum .u-baseColor--buttonLight:hover {border-color: #AED8E9 !important;} .u-tintSpectrum .u-baseColor--buttonLight .icon:before,.u-tintSpectrum .u-baseColor--buttonLight .svgIcon {color: #AED8E9 !important; fill: #AED8E9 !important;} .u-tintSpectrum .u-baseColor--buttonDark {border-color: #E8FAFF !important; color: #F5FFFF !important;} .u-tintSpectrum .u-baseColor--buttonDark:hover {border-color: #F5FFFF !important;} .u-tintSpectrum .u-baseColor--buttonDark .icon:before,.u-tintSpectrum .u-baseColor--buttonDark .svgIcon {color: #E8FAFF !important; fill: #E8FAFF !important;} .u-tintSpectrum .u-baseColor--buttonNormal {border-color: #CBE9F5 !important; color: #CBE9F5 !important;} .u-tintSpectrum .u-baseColor--buttonNormal:hover {border-color: #E8FAFF !important;} .u-tintSpectrum .u-baseColor--buttonNormal .icon:before,.u-tintSpectrum .u-baseColor--buttonNormal .svgIcon {color: #CBE9F5 !important; fill: #CBE9F5 !important;} .u-tintSpectrum .u-baseColor--buttonDark.button--filled,.u-tintSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: #E8FAFF !important; border-color: #E8FAFF !important; color: rgba(88, 170, 199, 1) !important; fill: rgba(88, 170, 199, 1) !important;} .u-tintSpectrum .u-baseColor--buttonNormal.button--filled,.u-tintSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: #CBE9F5 !important; border-color: #CBE9F5 !important; color: rgba(88, 170, 199, 1) !important; fill: rgba(88, 170, 199, 1) !important;} .u-tintSpectrum .u-baseColor--link {color: #CBE9F5 !important;} .u-tintSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: #F5FFFF !important;} .u-tintSpectrum .u-baseColor--link.link--darken:hover,.u-tintSpectrum .u-baseColor--link.link--darken:focus,.u-tintSpectrum .u-baseColor--link.link--darken:active {color: #F5FFFF !important;} .u-tintSpectrum .u-baseColor--link.link--dark {color: #F5FFFF !important;} .u-tintSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-tintSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-tintSpectrum .u-baseColor--link.link--dark.link--darken:active {color: #F5FFFF !important;} .u-tintSpectrum .u-baseColor--link.link--darker {color: #F5FFFF !important;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: #AED8E9;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: #AED8E9;} .u-tintSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: #AED8E9;} .u-tintSpectrum .ui-h1,.u-tintSpectrum .ui-h2,.u-tintSpectrum .ui-h3,.u-tintSpectrum .ui-h4,.u-tintSpectrum .ui-brand1,.u-tintSpectrum .ui-brand2,.u-tintSpectrum .ui-captionStrong {color: #F5FFFF !important; fill: #F5FFFF !important;} .u-tintSpectrum .ui-body,.u-tintSpectrum .ui-caps {color: #F5FFFF !important; fill: #F5FFFF !important;} .u-tintSpectrum .ui-summary,.u-tintSpectrum .ui-caption {color: #AED8E9 !important; fill: #AED8E9 !important;} .u-tintSpectrum .u-accentColor--borderLight {border-color: #AED8E9 !important;} .u-tintSpectrum .u-accentColor--borderNormal {border-color: #CBE9F5 !important;} .u-tintSpectrum .u-accentColor--borderDark {border-color: #E8FAFF !important;} .u-tintSpectrum .u-accentColor--iconLight .svgIcon,.u-tintSpectrum .u-accentColor--iconLight.svgIcon {fill: #AED8E9 !important;} .u-tintSpectrum .u-accentColor--iconNormal .svgIcon,.u-tintSpectrum .u-accentColor--iconNormal.svgIcon {fill: #CBE9F5 !important;} .u-tintSpectrum .u-accentColor--iconDark .svgIcon,.u-tintSpectrum .u-accentColor--iconDark.svgIcon {fill: #E8FAFF !important;} .u-tintSpectrum .u-accentColor--textNormal {color: #CBE9F5 !important;} .u-tintSpectrum .u-accentColor--hoverTextNormal:hover {color: #CBE9F5 !important;} .u-tintSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #F5FFFF !important;} .u-tintSpectrum .u-accentColor--textDark {color: #F5FFFF !important;} .u-tintSpectrum .u-accentColor--backgroundLight {background-color: #AED8E9 !important;} .u-tintSpectrum .u-accentColor--backgroundNormal {background-color: #CBE9F5 !important;} .u-tintSpectrum .u-accentColor--backgroundDark {background-color: #E8FAFF !important;} .u-tintSpectrum .u-accentColor--buttonDark {border-color: #E8FAFF !important; color: #F5FFFF !important;} .u-tintSpectrum .u-accentColor--buttonDark:hover {border-color: #F5FFFF !important;} .u-tintSpectrum .u-accentColor--buttonDark .icon:before,.u-tintSpectrum .u-accentColor--buttonDark .svgIcon{color: #E8FAFF !important; fill: #E8FAFF !important;} .u-tintSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #CBE9F5 !important; color: #CBE9F5 !important;} .u-tintSpectrum .u-accentColor--buttonNormal:hover {border-color: #E8FAFF !important;} .u-tintSpectrum .u-accentColor--buttonNormal .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal .svgIcon{color: #CBE9F5 !important; fill: #CBE9F5 !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(88, 170, 199, 1) !important; fill: rgba(88, 170, 199, 1) !important;} .u-tintSpectrum .u-accentColor--buttonDark.button--filled,.u-tintSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-tintSpectrum .u-accentColor--fillWhenActive.is-active {background-color: #E8FAFF !important; border-color: #E8FAFF !important; color: rgba(88, 170, 199, 1) !important; fill: rgba(88, 170, 199, 1) !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-tintSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: #CBE9F5 !important; border-color: #CBE9F5 !important; color: rgba(88, 170, 199, 1) !important; fill: rgba(88, 170, 199, 1) !important;} .u-tintSpectrum .postArticle.is-withAccentColors .markup--user,.u-tintSpectrum .postArticle.is-withAccentColors .markup--query {color: #CBE9F5 !important;} .u-accentColor--highlightFaint {background-color: rgba(225, 245, 254, 1) !important;} .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(176, 235, 255, 1) !important;} .postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(225, 245, 254, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(225, 245, 254, 1), rgba(225, 245, 254, 1));} .postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(199, 240, 255, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(199, 240, 255, 1), rgba(199, 240, 255, 1));} .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(176, 235, 255, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(176, 235, 255, 1), rgba(176, 235, 255, 1));} .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(176, 235, 255, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(176, 235, 255, 1), rgba(176, 235, 255, 1));} .postArticle.is-withAccentColors .markup--highlight {background-color: rgba(176, 235, 255, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(176, 235, 255, 1), rgba(176, 235, 255, 1));}</style><style class="js-collectionStyleConstant">.u-imageBgColor {background-color: rgba(0, 0, 0, 0.24705882352941178);} .u-imageSpectrum .u-baseColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconLight .svgIcon,.u-imageSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--iconNormal .svgIcon,.u-imageSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconDark .svgIcon,.u-imageSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDarker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important; color: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--buttonLight .icon:before,.u-imageSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark .icon:before,.u-imageSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal .icon:before,.u-imageSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonDark.button--filled,.u-imageSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--buttonNormal.button--filled,.u-imageSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--link {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .ui-h1,.u-imageSpectrum .ui-h2,.u-imageSpectrum .ui-h3,.u-imageSpectrum .ui-h4,.u-imageSpectrum .ui-brand1,.u-imageSpectrum .ui-brand2,.u-imageSpectrum .ui-captionStrong {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-body,.u-imageSpectrum .ui-caps {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-summary,.u-imageSpectrum .ui-caption {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconLight .svgIcon,.u-imageSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--iconNormal .svgIcon,.u-imageSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconDark .svgIcon,.u-imageSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark .icon:before,.u-imageSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonDark.button--filled,.u-imageSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-imageSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-imageSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .postArticle.is-withAccentColors .markup--user,.u-imageSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--highlightFaint {background-color: rgba(255, 255, 255, 0.2) !important;} .u-imageSpectrum .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(255, 255, 255, 0.6) !important;} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: rgba(255, 255, 255, 0.2) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: rgba(255, 255, 255, 0.4) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.4));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}.u-resetSpectrum .u-tintBgColor {background-color: rgba(255, 255, 255, 1) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%) !important;} .u-resetSpectrum .u-baseColor--borderLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderDark {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--iconLight .svgIcon,.u-resetSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconNormal .svgIcon,.u-resetSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconDark .svgIcon,.u-resetSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textNormal {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDarker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--backgroundLight {background-color: rgba(0, 0, 0, 0.09803921568627451) !important;} .u-resetSpectrum .u-baseColor--backgroundNormal {background-color: rgba(0, 0, 0, 0.2) !important;} .u-resetSpectrum .u-baseColor--backgroundDark {background-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight .icon:before,.u-resetSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark {border-color: rgba(0, 0, 0, 0.6) !important; color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--buttonDark .icon:before,.u-resetSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important; color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal .icon:before,.u-resetSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(0, 0, 0, 0.4980392156862745) !important; fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark.button--filled,.u-resetSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2980392156862745) !important; border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--buttonNormal.button--filled,.u-resetSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2) !important; border-color: rgba(0, 0, 0, 0.2) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--link {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--darken:active {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--link.link--darker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .ui-h1,.u-resetSpectrum .ui-h2,.u-resetSpectrum .ui-h3,.u-resetSpectrum .ui-h4,.u-resetSpectrum .ui-brand1,.u-resetSpectrum .ui-brand2,.u-resetSpectrum .ui-captionStrong {color: rgba(0, 0, 0, 0.8) !important; fill: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .ui-body,.u-resetSpectrum .ui-caps {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .ui-summary,.u-resetSpectrum .ui-caption {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-accentColor--borderLight {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderNormal {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderDark {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconLight .svgIcon,.u-resetSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--iconNormal .svgIcon,.u-resetSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconDark .svgIcon,.u-resetSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textDark {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundLight {background-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundNormal {background-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundDark {background-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark {border-color: rgba(17, 128, 14, 1) !important; color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark .icon:before,.u-resetSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(15, 115, 12, 1) !important; fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(26, 137, 23, 1) !important; color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(17, 128, 14, 1) !important; fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark.button--filled,.u-resetSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-resetSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(15, 115, 12, 1) !important; border-color: rgba(15, 115, 12, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-resetSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(17, 128, 14, 1) !important; border-color: rgba(17, 128, 14, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .postArticle.is-withAccentColors .markup--user,.u-resetSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(17, 128, 14, 1) !important;}</style><div class="js-collectionFooter u-tintBgColor u-hide"><div class="container u-maxWidth1040"><div class="u-marginTop10 u-paddingTop10 u-paddingBottom30 u-tintSpectrum"><div class="linkSet u-clearfix"><div class="u-floatRight u-textColorNormal u-baseColor--textNormal u-xs-floatLeft"><a class="button button--chromeless u-baseColor--buttonNormal u-marginLeft15 u-lineHeight35 u-xs-block u-xs-marginLeft0" href="https://medium.com/better-practices/about" title="About Better Practices" aria-label="About Better Practices">About Better Practices</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/better-practices/latest" title="Latest Stories for Better Practices" aria-label="Latest Stories for Better Practices">Latest Stories</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/better-practices/archive" title="Archive for Better Practices" aria-label="Archive for Better Practices">Archive</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/about">About Medium</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f">Terms</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9">Privacy</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/business">Teams</a></div></div></div></div></div></div></div></div><div class="loadingBar"></div><script>// <![CDATA[ window["obvInit"] = function (opt_embedded) {window["obvInit"]["embedded"] = opt_embedded; window["obvInit"]["ready"] = true;} // ]]></script><script>// <![CDATA[ var GLOBALS = {"audioUrl":"https://d1fcbxp97j4nb2.cloudfront.net","baseUrl":"https://medium.com","buildLabel":"20241203-1923-root","currentUser":{"userId":"lo_3b47d9a32c3e","isVerified":false,"subscriberEmail":"","hasPastMemberships":false,"isEnrolledInHightower":false,"isEligibleForHightower":true,"hightowerLastLockedAt":0,"isWriterProgramEnrolled":true,"isWriterProgramInvited":false,"isWriterProgramOptedOut":false,"writerProgramVersion":0,"writerProgramEnrolledAt":0,"friendLinkOnboarding":0,"hasAdditionalUnlocks":false,"hasApiAccess":false,"writerProgramDistributionSettingOptedIn":false,"isSuspended":false,"collectionOnboardingSeen":0,"atsQualifiedAt":0},"currentUserHasUnverifiedEmail":false,"isAuthenticated":false,"isCurrentUserVerified":false,"miroUrl":"https://cdn-images-1.medium.com","moduleUrls":{"base":"https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.8ve66ihj1dVpByzcJOrOvg.12.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.Qy6ah4f91w20jfu666BAnA.12.js","hightower":"https://cdn-static-1.medium.com/_/fp/gen-js/main-hightower.bundle.y0UkxCxPBUbLlduk5XbwLQ.12.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.eZhPgaD8AglnbC5Rzxqvhg.12.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle._3sFgeS2d1AoQzYKqNXeTA.12.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.SAMCbq1ffJ6HMzwniRoo9g.12.js","payments":"https://cdn-static-1.medium.com/_/fp/gen-js/main-payments.bundle.AiXyuYj3AvxRA1-7HEyP9Q.12.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.4zVUlXp2nm6KJVeUDNORVg.12.js","power-readers":"https://cdn-static-1.medium.com/_/fp/gen-js/main-power-readers.bundle.6Dyc-nVN2MDV_AM9XDAZug.12.js","pubs":"https://cdn-static-1.medium.com/_/fp/gen-js/main-pubs.bundle.zmDFkcqRGpKmOcLmQ7vS6A.12.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.2I2tXSo7-rbez_WYXfga0Q.12.js"},"previewConfig":{"weightThreshold":1,"weightImageParagraph":0.51,"weightIframeParagraph":0.8,"weightTextParagraph":0.08,"weightEmptyParagraph":0,"weightP":0.003,"weightH":0.005,"weightBq":0.003,"minPTextLength":60,"truncateBoundaryChars":20,"detectTitle":true,"detectTitleLevThreshold":0.15},"productName":"Medium","supportsEdit":false,"termsUrl":"//policy.medium.com/medium-terms-of-service-9db0094a1e0f","textshotHost":"textshot.textshot-production.svc.cluster.local","transactionId":"1733301655660:122b074d98f","useragent":{"browser":"ie","family":"ie","os":"windows","version":7,"supportsDesktopEdit":false,"supportsInteract":false,"supportsView":true,"isMobile":false,"isTablet":false,"isNative":false,"supportsFileAPI":false,"isTier1":false,"clientVersion":"","clientChannel":"","supportsRealScrollEvents":false,"supportsVhUnits":false,"ruinsViewportSections":false,"supportsHtml5Video":false,"supportsMagicUnderlines":false,"isWebView":false,"isFacebookWebView":false,"supportsProgressiveMedia":false,"supportsPromotedPosts":true,"isBot":false,"isNativeIphone":false,"supportsCssVariables":false,"supportsVideoSections":true,"emojiSupportLevel":1,"isSearchBot":false,"isSyndicationBot":false,"isNativeAndroid":false,"isNativeIos":false,"isSeoAuditBot":false,"isInternalApp":false,"supportsApplePay":false,"supportsScrollableMetabar":false},"variants":{"allow_access":true,"allow_signup":true,"allow_test_auth":"disallow","android_enable_editor_new_publishing_flow":true,"android_enable_friend_links_creation":true,"android_enable_friend_links_postpage_banners":true,"android_enable_image_sharer":true,"android_enable_lists_v2":true,"android_enable_syntax_highlight":true,"android_enable_topic_portals":true,"android_rating_prompt_stories_read_threshold":2,"android_two_hour_refresh":true,"available_annual_plan":"2c754bcc2995","available_annual_premium_plan":"4a442ace1476","available_monthly_plan":"60e220181034","available_monthly_premium_plan":"12a660186432","browsable_stream_config_bucket":"curated-topics","can_receive_tips_v0":true,"can_send_tips_v0":true,"coronavirus_topic_recirc":true,"disable_partner_program_enrollment":true,"enable_abandoned_cart_promotion_email":true,"enable_android_dynamic_aspirational_paywall":true,"enable_android_dynamic_programming_paywall":true,"enable_android_miro_v2":true,"enable_android_offline_reading":true,"enable_android_verified_author":true,"enable_app_flirty_thirty":true,"enable_apple_sign_in":true,"enable_apple_webhook":true,"enable_aurora_pub_follower_page":true,"enable_author_cards":true,"enable_author_cards_byline":true,"enable_auto_follow_on_subscribe":true,"enable_automod":true,"enable_bayesian_average_pub_search":true,"enable_bg_post_post":true,"enable_boost_nia_v01":true,"enable_braintree_apple_pay":true,"enable_braintree_client":true,"enable_braintree_google_pay":true,"enable_braintree_integration":true,"enable_braintree_paypal":true,"enable_braintree_trial_membership":true,"enable_braintree_webhook":true,"enable_branch_io":true,"enable_cache_less_following_feed":true,"enable_configure_pronouns":true,"enable_conversion_model_v2":"group_2","enable_conversion_ranker_v2":"control","enable_creator_welcome_email":true,"enable_deprecate_legacy_providers_v3":true,"enable_diversification_rex":true,"enable_entities_to_follow_v2":true,"enable_eventstats_event_processing":true,"enable_explicit_signals":true,"enable_explicit_signals_updated_post_previews":true,"enable_footer_app_buttons":true,"enable_google_one_tap":true,"enable_google_webhook":true,"enable_group_gifting":true,"enable_iceland_forced_android":true,"enable_import":true,"enable_intrinsic_automatic_actions":true,"enable_ios_autorefresh":true,"enable_ios_dynamic_paywall_aspiriational":true,"enable_ios_dynamic_paywall_programming":true,"enable_ios_easy_resubscribe":true,"enable_ios_offline_reading":true,"enable_legacy_feed_in_iceland":true,"enable_lite_archive_page":true,"enable_lite_continue_this_thread":true,"enable_lite_homepage":true,"enable_lite_response_markup":true,"enable_lite_server_upstream_deadlines":true,"enable_lo_homepage":"control","enable_maim_the_meter":true,"enable_marketing_emails":true,"enable_mastodon_avatar_upload":true,"enable_mastodon_for_members":true,"enable_mastodon_for_members_username_selection":true,"enable_medium2_kbfd":true,"enable_members_only_audio":true,"enable_ml_rank_rex_anno":true,"enable_moc_load_processor_all_recs_surfaces":true,"enable_moc_load_processor_c":true,"enable_moc_load_processor_first_story":true,"enable_new_manage_membership_flow":true,"enable_new_stripe_customers":true,"enable_newsletter_lo_flow_custom_domains":true,"enable_pill_based_home_feed":true,"enable_pp_country_expansion":true,"enable_pp_v4":true,"enable_pre_pp_v4":true,"enable_premium_tier":true,"enable_premium_tier_badge":true,"enable_publication_hierarchy_web":true,"enable_ranker_v10":"control","enable_recaptcha_enterprise":true,"enable_recirc_model":true,"enable_recommended_publishers_query":true,"enable_rex_aggregator_v2":true,"enable_rex_new_push_notification_endpoint":true,"enable_rex_reading_history":true,"enable_rito_upstream_deadlines":true,"enable_seamless_social_sharing":true,"enable_see_pronouns":true,"enable_sharer_create_post_share_key":true,"enable_sharer_validate_post_share_key":true,"enable_simplified_digest_v2_b":true,"enable_speechify_ios":true,"enable_speechify_widget":true,"enable_sprig":true,"enable_starspace":true,"enable_susi_redesign_android":true,"enable_susi_redesign_ios":true,"enable_switch_plan_premium_tier":true,"enable_tag_recs":true,"enable_tick_landing_page":true,"enable_tipping_v0_android":true,"enable_tipping_v0_ios":true,"enable_tribute_landing_page":true,"enable_update_explore_wtf":true,"enable_update_topic_portals_wtf":true,"enable_updated_pub_recs_ui":true,"enable_verifications_service":true,"glyph_font_set":"m2-unbound-source-serif-pro","goliath_externalsearch_enable_comment_deindexation":true,"ios_display_paywall_after_onboarding":true,"ios_enable_friend_links_creation":true,"ios_enable_friend_links_postpage_banners":true,"ios_enable_home_post_menu":true,"ios_enable_lock_responses":true,"ios_enable_verified_book_author":true,"ios_iceland_nux":true,"ios_in_app_free_trial":true,"ios_remove_twitter_onboarding_step":true,"ios_social_share_sheet":true,"limit_post_referrers":true,"limit_user_follows":true,"mobile_custom_app_icon":true,"num_post_bottom_responses_to_show":1,"onboarding_tags_from_top_views":true,"reader_fair_distribution_non_qp":true,"redefined_top_posts":true,"reengagement_notification_duration":3,"rex_generator_max_candidates":1000,"signin_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","signup_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","skip_fs_cache_user_vals":true},"xsrfToken":"","iosAppId":"828256236","supportEmail":"yourfriends@medium.com","fp":{"/icons/monogram-mask.svg":"https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg","/icons/favicon-medium-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium-editor.PiakrZWB7Yb80quUVQWM6g.12.ico"},"authBaseUrl":"https://medium.com","imageUploadSizeMb":25,"isAuthDomainRequest":true,"algoliaApiEndpoint":"https://MQ57UUUQZ2-dsn.algolia.net","algoliaAppId":"MQ57UUUQZ2","algoliaSearchOnlyApiKey":"394474ced050e3911ae2249ecc774921","iosAppStoreUrl":"https://itunes.apple.com/app/medium-everyones-stories/id828256236?pt=698524&mt=8","iosAppLinkBaseUrl":"medium:","algoliaIndexPrefix":"medium_","androidPlayStoreUrl":"https://play.google.com/store/apps/details?id=com.medium.reader","googleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","androidPackage":"com.medium.reader","androidPlayStoreMarketScheme":"market://details?id=com.medium.reader","googleAuthUri":"https://accounts.google.com/o/oauth2/auth","androidScheme":"medium","layoutData":{"useDynamicScripts":false,"googleAnalyticsTrackingCode":"G-7JY7T788PK","jsShivUrl":"https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js","useDynamicCss":false,"faviconUrl":"https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","faviconImageId":"5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","fontSets":[{"id":8,"url":"https://glyph.medium.com/css/e/sr/latin/e/ssr/latin/e/ssb/latin/m2-unbound-source-serif-pro.css"},{"id":11,"url":"https://glyph.medium.com/css/m2-unbound-source-serif-pro.css"},{"id":9,"url":"https://glyph.medium.com/css/mkt.css"}],"glyphUrl":"https://glyph.medium.com"},"authBaseUrlRev":"moc.muidem//:sptth","stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","archiveUploadSizeMb":100,"previewConfig2":{"weightThreshold":1,"weightImageParagraph":0.05,"raiseImage":true,"enforceHeaderHierarchy":true,"isImageInsetRight":true},"isAmp":false,"iosScheme":"medium","facebook":{"key":"542599432471018","namespace":"medium-com","scope":{"default":["public_profile","email"],"connect":["public_profile","email"],"login":["public_profile","email"],"share":["public_profile","email"]}},"memberContentTopicId":"13d7efd82fb2","audioContentTopicId":"3792abbd134","isDoNotAuth":false,"buggle":{"videoUrl":"https://cdn-videos-1.medium.com","audioUrl":"https://cdn-audio-1.medium.com"},"referrerType":5,"partnerProgramEmail":"partnerprogram@medium.com","recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","countryCode":"SG","bypassMeter":false,"branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","paypal":{"clientMode":"production","oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com/redeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"}},"collectionConfig":{"mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"]},"bypassMeterWithShareKey":false,"recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","cdcMessaging":[{"text":"For more information on the novel coronavirus and Covid-19, visit ","href":"","type":"text","start":0,"end":0},{"text":"cdc.gov","href":"https://www.cdc.gov/coronavirus/2019-nCoV","type":"link","start":66,"end":73},{"text":".","href":"","type":"text","start":0,"end":0}],"braintree":{"merchantId":"m56f8fqpf7ngnrd4"},"diagnostics":{},"domain":"medium.com"} // ]]></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.8ve66ihj1dVpByzcJOrOvg.12.js" async></script><script>// <![CDATA[ window["obvInit"]({"references":{"Collection":{"410f2fbc015d":{"id":"410f2fbc015d","name":"Better Practices","slug":"better-practices","tags":["API","SOFTWARE DEVELOPMENT","TESTING","DEVELOPER TOOLS","SOFTWARE ENGINEERING"],"creatorId":"94144f041644","description":"For individual engineers to the largest teams, Better Practices is intended to distill knowledge from the Postman community. This is a place to learn about modern software practices together! Read more: https://medium.com/better-practices/introducing-better-practices-e9cf14cf0c88","shortDescription":"For individual engineers to the largest teams, Better…","image":{"imageId":"1*KRFQANUncaYZMQl1i0eXqg.png","filter":"","backgroundSize":"","originalWidth":600,"originalHeight":601,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":8616,"activeAt":1688663072249},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"1*cdBy0vdt5ZlUlRaxt20K6w.png","filter":"","backgroundSize":"","originalWidth":600,"originalHeight":72,"strategy":"resample","height":0,"width":0},"twitterUsername":"getpostman","facebookPageName":"getpostman","publicEmail":"joyce@postman.com","sections":[{"type":2,"collectionHeaderMetadata":{"backgroundImage":{"id":"1*-GYfQtC8YTx0Pc5ZHP15Pw.png","originalWidth":3000,"originalHeight":1500,"focusPercentX":45.357142857142854,"focusPercentY":13.571428571428571},"logoImage":{"id":"1*Pu1GkYWY2UKlPgXLDgbwIg@2x.png","originalWidth":625,"originalHeight":466,"alt":"Better Practices"},"alignment":2,"layout":6}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":4,"postIds":[]}},{"type":1,"postListMetadata":{"source":1,"layout":1,"number":2,"postIds":[],"sectionHeader":"Trending"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":25,"postIds":[],"sectionHeader":"Latest"}}],"tintColor":"#FF58AAC7","lightText":true,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF3D92AE","point":0},{"color":"#FF3D87A1","point":0.1},{"color":"#FF3C7D93","point":0.2},{"color":"#FF3A7285","point":0.3},{"color":"#FF376778","point":0.4},{"color":"#FF335B6A","point":0.5},{"color":"#FF2F505C","point":0.6},{"color":"#FF29444E","point":0.7},{"color":"#FF23373F","point":0.8},{"color":"#FF1B2A30","point":0.9},{"color":"#FF111C20","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF58AAC7","point":0},{"color":"#FF6CB4CE","point":0.1},{"color":"#FF7EBDD5","point":0.2},{"color":"#FF8EC6DC","point":0.3},{"color":"#FF9ECFE2","point":0.4},{"color":"#FFAED8E9","point":0.5},{"color":"#FFBDE0EF","point":0.6},{"color":"#FFCBE9F5","point":0.7},{"color":"#FFDAF1FC","point":0.8},{"color":"#FFE8FAFF","point":0.9},{"color":"#FFF5FFFF","point":1}],"backgroundColor":"#FF58AAC7"},"highlightSpectrum":{"colorPoints":[{"color":"#FFE6F6FD","point":0},{"color":"#FFE1F5FE","point":0.1},{"color":"#FFDCF4FE","point":0.2},{"color":"#FFD7F3FF","point":0.3},{"color":"#FFD2F2FF","point":0.4},{"color":"#FFCDF1FF","point":0.5},{"color":"#FFC7F0FF","point":0.6},{"color":"#FFC2EFFF","point":0.7},{"color":"#FFBCEDFF","point":0.8},{"color":"#FFB6ECFF","point":0.9},{"color":"#FFB0EBFF","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF58AAC7","point":0},{"color":"#FF6AB2CD","point":0.1},{"color":"#FF7AB9D2","point":0.2},{"color":"#FF89C1D7","point":0.3},{"color":"#FF98C8DB","point":0.4},{"color":"#FFA5CFE0","point":0.5},{"color":"#FFB3D6E5","point":0.6},{"color":"#FFC0DDE9","point":0.7},{"color":"#FFCCE4EE","point":0.8},{"color":"#FFD9EAF2","point":0.9},{"color":"#FFE5F1F7","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":1,"title":"Development","tagSlug":"software-development","url":"https://medium.com/better-practices/tagged/software-development","source":"tagSlug"},{"type":1,"title":"Testing","tagSlug":"testing","url":"https://medium.com/better-practices/tagged/testing","source":"tagSlug"},{"type":1,"title":"Publishing","tagSlug":"documentation","url":"https://medium.com/better-practices/tagged/documentation","source":"tagSlug"},{"type":1,"title":"DevOps","tagSlug":"devops","url":"https://medium.com/better-practices/tagged/devops","source":"tagSlug"}],"colorBehavior":2,"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"backgroundImage":{"id":"1*-GYfQtC8YTx0Pc5ZHP15Pw.png","originalWidth":3000,"originalHeight":1500,"focusPercentX":45.357142857142854,"focusPercentY":13.571428571428571},"logoImage":{"id":"1*Pu1GkYWY2UKlPgXLDgbwIg@2x.png","originalWidth":625,"originalHeight":466,"alt":"Better Practices"},"alignment":2,"layout":6},"subscriberCount":8616,"tagline":"For individual engineers to the largest teams, Better…","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1616092819594,"type":"Collection"}},"User":{"8e51cb7fb823":{"userId":"8e51cb7fb823","name":"Joyce Lin","username":"joycelin-codes","createdAt":1465859751973,"imageId":"1*KdCZi31V8ANQezzWiDQfXA.jpeg","backgroundImageId":"","bio":"coding and cats in San Francisco","twitterScreenName":"PetuniaGray","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"subdomainCreatedAt":1606580226491,"hasCompletedProfile":false,"userDismissableFlags":[29,12,50,5,2,18,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"fa5cf0bcd8ab":{"userId":"fa5cf0bcd8ab","name":"Shahar Davidson","username":"shahar.davidson","createdAt":1510837784496,"imageId":"2*AVVXye9GEE2THCWfYgxL1g.png","backgroundImageId":"","bio":"A startup engineering manager — writing about startups, team building, management, tech, and how tech enables business.","allowNotes":1,"mediumMemberAt":1620539319511,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedAndroidApp":1620539255235,"isMembershipTrialEligible":false,"optInToIceland":true,"userFlags":[2],"hasCompletedProfile":false,"userDismissableFlags":[32,29,21,19,18,49,48,12,8,6,50,3,2,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"c469aa093a35":{"userId":"c469aa093a35","name":"Gbadebo Bello","username":"gbahdeyboh","createdAt":1539885058471,"imageId":"1*dDSD401l67qtsFUqiwwPuA.jpeg","backgroundImageId":"","bio":"Developer Relations Engineer | Loves Community & Open Source | I enjoy learning by teaching(Writing)","twitterScreenName":"Gbahdeyboh","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1617896415699,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"subdomainCreatedAt":1607160045780,"hasCompletedProfile":false,"userDismissableFlags":[32,29,21,49,16,12,8,50,5,3,2,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"d5ebb98cbc1b":{"userId":"d5ebb98cbc1b","name":"Manoj Vignesh K M","username":"kmmanoj","createdAt":1469792988546,"imageId":"1*4ET5y59IcnroicTaj3w9Eg.png","backgroundImageId":"","bio":"Exploring the Science of Security | Georgia Tech MS CS | Security & Software Engineering","twitterScreenName":"kmmanojv96","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"subdomainCreatedAt":1692638736179,"hasCompletedProfile":false,"userDismissableFlags":[32,29,12,8,5,21,4,3,2,18,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"da19aa755173":{"userId":"da19aa755173","name":"Shubham Bhargav","username":"shubham-bhargav","createdAt":1464275465320,"imageId":"1*vbnk7teU9-ridG836x35eA.png","backgroundImageId":"","bio":"Dabbler in product, finance / investing, data, and organization design. #learning-together","twitterScreenName":"","allowNotes":1,"mediumMemberAt":1584239946000,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"subdomainCreatedAt":1635780842073,"hasCompletedProfile":true,"userDismissableFlags":[32,47,29,12,8,21,3,2,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-ca","type":"User"},"b0dd739a6a15":{"userId":"b0dd739a6a15","name":"Hayk Sardaryan","username":"hayk-sardaryan","createdAt":1576778084395,"imageId":"1*nubu4aTW_Ug4t969xoW80Q.jpeg","backgroundImageId":"","bio":"Software Development Engineer in Test","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1604542015203,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"subdomainCreatedAt":1612812898227,"hasCompletedProfile":true,"userDismissableFlags":[8,2,1],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"3b9502d26b05":{"userId":"3b9502d26b05","name":"Meenakshi Dhanani","username":"meenakshi-dhanani","createdAt":1496378586183,"imageId":"1*9OxTvpbSSXNZG3jB_wcerg.jpeg","backgroundImageId":"","bio":"Developer Advocate @Postman","twitterScreenName":"mdhananii","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1621655868799,"isMembershipTrialEligible":true,"facebookDisplayName":"Meenakshi Dhanani","optInToIceland":true,"subdomainCreatedAt":1617263135286,"hasCompletedProfile":false,"userDismissableFlags":[8,29,3,2,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"6a98eb806571":{"userId":"6a98eb806571","name":"Jason Lengstorf","username":"jlengstorf","createdAt":1383287922344,"imageId":"1*2HtRupxBOVL67OVfgMBTdg.jpeg","backgroundImageId":"","bio":"⚡️ a.k.a. Blitz Jackson 📺 host of learnwithjason.dev 📝 blog: lengstorf.com 🎨 art: dribbble.com/jlengstorf 🥑 now: @Netlify ⏳ prev @gatsbyjs @IBM he/him","twitterScreenName":"jlengstorf","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"isCreatorPartnerProgramEnrolled":true,"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"5c3e09856100":{"userId":"5c3e09856100","name":"Arlemi","username":"arlemi","createdAt":1465894860399,"imageId":"2*ZwLwpvlsWIBDn1IiaSW36A.jpeg","backgroundImageId":"","bio":"Advocating for the developers @ Postman","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[2,29],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"7cc4c4e5ca55":{"userId":"7cc4c4e5ca55","name":"James Messinger","username":"jamesmessinger","createdAt":1579812325979,"imageId":"2*Y8_SXze9mYr99gtxSI08tA.png","backgroundImageId":"","bio":"Developer Experience Director @ ShipEngine","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[2],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"6d7cc8aa9337":{"userId":"6d7cc8aa9337","name":"Ankit Muchhala","username":"ankit-m","createdAt":1446447098097,"imageId":"1*YY1NowQPJHR6sOmecDpI_Q.jpeg","backgroundImageId":"","bio":"Software developer at Postman","twitterScreenName":"ankit_muchhala","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"Ankit Muchhala","optInToIceland":true,"subdomainCreatedAt":1621937633083,"hasCompletedProfile":false,"userDismissableFlags":[3,2,1],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"d74f4b51eb4f":{"userId":"d74f4b51eb4f","name":"Matt Ball","username":"matt_b.","createdAt":1542675958541,"imageId":"2*ZjMXONd54ecmLX8ybJCzgg.jpeg","backgroundImageId":"","bio":"🇬🇧 living in 🇺🇸. Doing solutionsy things. Wannabe racing driver. https://matt-ball.uk","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[29,12,36,2],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"}},"Post":{"8885a7601523":{"id":"8885a7601523","versionId":"20b7b2443f26","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"Powering home automation with WebSocket APIs","detectedLanguage":"en","latestVersion":"20b7b2443f26","latestPublishedVersion":"20b7b2443f26","hasUnpublishedEdits":false,"latestRev":70,"createdAt":1688662820286,"updatedAt":1688675341004,"acceptedAt":0,"firstPublishedAt":1688663072168,"latestPublishedAt":1688663072168,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Get started with the Home Assistant WebSocket API","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*SV-NQW6-Sz2D9Buh.png","filter":"","backgroundSize":"","originalWidth":1000,"originalHeight":613,"strategy":"resample","height":0,"width":0},"wordCount":562,"imageCount":3,"readingTime":2.670754716981132,"subtitle":"Get started with the Home Assistant WebSocket API","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":7,"isBookmarked":false,"tags":[{"slug":"iot","name":"IoT","postCount":52123,"metadata":{"postCount":52123,"coverImage":{"id":"1*qwssSy8uMmiD4mKsLfW-iQ.jpeg","originalWidth":1080,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"home-assistant","name":"Home Assistant","postCount":740,"metadata":{"postCount":740,"coverImage":{"id":"1*O8bU23x9U2VW9-qF-Us4Sw.png","originalWidth":1600,"originalHeight":900,"isFeatured":true}},"type":"Tag"},{"slug":"websocket","name":"Websocket","postCount":3241,"metadata":{"postCount":3241,"coverImage":{"id":"1*UwViNRFdaFH2osbcBeOhPw.png","originalWidth":800,"originalHeight":400,"isFeatured":true,"alt":"WebSocket with PHP"}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://learning.postman.com/docs/sending-requests/websocket/websocket/","alts":[],"httpStatus":200},{"url":"https://quickstarts.postman.com/guide/home-assistant/index.html?index=..%2F..index#0","alts":[],"httpStatus":200},{"url":"https://www.home-assistant.io/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/postman/workspace/program-smart-lights/overview","alts":[],"httpStatus":200},{"url":"https://www.postman.com/postman/workspace/program-smart-lights/collection/6481ed9afe7f1bdfaa732408","alts":[],"httpStatus":200},{"url":"https://www.postman.com/postman/workspace/websockets/documentation/14057978-712d684f-c252-4bd9-a7a6-6a893e41adea","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/set-up-a-websockets-server-in-node-js-postman/","alts":[],"httpStatus":200},{"url":"https://developers.home-assistant.io/docs/api/rest/","alts":[],"httpStatus":200},{"url":"https://developers.home-assistant.io/docs/api/rest","alts":[],"httpStatus":200},{"url":"https://developers.home-assistant.io/docs/api/websocket","alts":[],"httpStatus":200},{"url":"https://youtu.be/Qk9A0QbG5-I","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=Qk9A0QbG5-I&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=Qk9A0QbG5-I&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://youtu.be/H-7EZVj9D-k","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=H-7EZVj9D-k&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=H-7EZVj9D-k&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://blog.postman.com/rest-api-examples","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/rest-api-examples/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1688663073863},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":59,"sectionCount":1,"readingList":0,"topics":[{"topicId":"63c6f1f93ee","slug":"javascript","createdAt":1493945704961,"deletedAt":0,"image":{"id":"1*5UyyDJ1ESD11yQNd1UVAaQ@2x.jpeg","originalWidth":5472,"originalHeight":3648},"name":"Javascript","description":"An ode to code.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Javascript News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"powering-home-automation-with-websocket-apis","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"powering-home-automation-with-websocket-apis-8885a7601523","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*SV-NQW6-Sz2D9Buh.png","originalWidth":1000,"originalHeight":613,"isFeatured":true}},{"name":"055d","type":3,"text":"Powering home automation with WebSocket APIs","markups":[],"alignment":1},{"name":"94c0","type":13,"text":"Get started with the Home Assistant WebSocket API","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Get started with the Home Assistant WebSocket API"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"b2b05dab1f82","webCanonicalUrl":"https://blog.postman.com/powering-home-automation-with-websocket-apis/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"055d","type":3,"text":"Powering home automation with WebSocket APIs","markups":[]},{"name":"94c0","type":13,"text":"Get started with the Home Assistant WebSocket API","markups":[]},{"name":"d503","type":1,"text":"In Part 1 of this series, we learned about the WebSocket protocol and how to set up our own WebSocket server in Node.js. Next, let’s explore how to use a public WebSocket API to access smart devices around a connected home.","markups":[{"type":3,"start":47,"end":56,"href":"https://learning.postman.com/docs/sending-requests/websocket/websocket/","title":"","rel":"","anchorType":0},{"type":3,"start":77,"end":119,"href":"https://blog.postman.com/set-up-a-websockets-server-in-node-js-postman/","title":"","rel":"","anchorType":0}]},{"name":"546c","type":3,"text":"REST and WebSockets for a connected home","markups":[]},{"name":"0f78","type":1,"text":"When it comes to transmitting data in a connected…","markups":[{"type":3,"start":73,"end":77,"href":"https://blog.postman.com/rest-api-examples/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"8099","startIndex":0}]},"isFullContent":false,"subtitle":"Get started with the Home Assistant WebSocket API"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"bace9cac42e1":{"id":"bace9cac42e1","versionId":"943f38323d42","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"Get started using Google Cloud APIs to manage cloud infrastructure","detectedLanguage":"en","latestVersion":"943f38323d42","latestPublishedVersion":"943f38323d42","hasUnpublishedEdits":false,"latestRev":65,"createdAt":1687978454395,"updatedAt":1687983952226,"acceptedAt":0,"firstPublishedAt":1687979014988,"latestPublishedAt":1687979014988,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"DevOps engineers and data engineers use APIs for many reasons, including to manage cloud infrastructure.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*vH0TBiRYXZVyT6zA9iuREQ.jpeg","filter":"","backgroundSize":"","originalWidth":1632,"originalHeight":865,"strategy":"resample","height":0,"width":0},"wordCount":470,"imageCount":4,"readingTime":2.4735849056603776,"subtitle":"DevOps engineers and data engineers use APIs for many reasons, including to manage cloud infrastructure.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":2,"isBookmarked":false,"tags":[{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"devops","name":"DevOps","postCount":102215,"metadata":{"postCount":102215,"coverImage":{"id":"1*BqVsCBa2mLv1UWQrdhjX5w.png","originalWidth":1500,"originalHeight":750,"isFeatured":true,"alt":"How I Am Using a Lifetime 100% Free Server"}},"type":"Tag"},{"slug":"gcp","name":"Gcp","postCount":9287,"metadata":{"postCount":9287,"coverImage":{"id":"1*EidOUfMb-QsxuSj2_dVCKA.png","originalWidth":2002,"originalHeight":336,"isFeatured":true}},"type":"Tag"},{"slug":"infrastructure","name":"Infrastructure","postCount":14794,"metadata":{"postCount":14794,"coverImage":{"id":"0*7veJqb8ZHhh9cGD7.JPG","originalWidth":639,"originalHeight":426,"isFeatured":true}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://quickstarts.postman.com/guide/gcp/index.html?index=..%2F..index#0","alts":[],"httpStatus":200},{"url":"https://god.gw.postman.com/run-collection/13191452-a3a3e4b4-8586-47dc-a8d3-519c547e58c1?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D13191452-a3a3e4b4-8586-47dc-a8d3-519c547e58c1%26entityType%3Dcollection%26workspaceId%3D0a0d015d-e451-49cd-87fe-e3772ddae97a","alts":[],"httpStatus":200},{"url":"https://www.postman.com/devrel/workspace/cloud-onboarding-collections/collection/13191452-a3a3e4b4-8586-47dc-a8d3-519c547e58c1","alts":[],"httpStatus":200},{"url":"https://www.postman.com/google-maps-platform/workspace/google-maps-platform/overview","alts":[],"httpStatus":200},{"url":"https://www.postman.com/devrel/workspace/cloud-onboarding-collections/collection/13191452-92632f93-a0c2-42f3-847e-ff7ffdfe688b","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1687979015228},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":25,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"get-started-using-google-cloud-apis-to-manage-cloud-infrastructure","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"get-started-using-google-cloud-apis-to-manage-cloud-infrastructure-bace9cac42e1","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*vH0TBiRYXZVyT6zA9iuREQ.jpeg","originalWidth":1632,"originalHeight":865,"isFeatured":true}},{"name":"d13f","type":3,"text":"Get started using Google Cloud APIs to manage cloud infrastructure","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"DevOps engineers and data engineers use APIs for many reasons, including to manage cloud infrastructure."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"d13f","type":3,"text":"Get started using Google Cloud APIs to manage cloud infrastructure","markups":[]},{"name":"8dce","type":1,"text":"It’s not just developers who rely on APIs. DevOps engineers and data engineers also use APIs for many reasons, including to manage cloud infrastructure. For example, you can programmatically manage resources, configure services, and perform operations using APIs.","markups":[]},{"name":"0f93","type":1,"text":"Let’s review other reasons to use cloud APIs.","markups":[]},{"name":"f107","type":3,"text":"Reasons to use cloud APIs","markups":[]},{"name":"7d00","type":1,"text":"In addition to providing…","markups":[]}],"sections":[{"name":"e4fd","startIndex":0}]},"isFullContent":false,"subtitle":"DevOps engineers and data engineers use APIs for many reasons, including to manage cloud infrastructure."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"a0c7dde28bd4":{"id":"a0c7dde28bd4","versionId":"8309afbf2000","creatorId":"fa5cf0bcd8ab","homeCollectionId":"410f2fbc015d","title":"Boost Your Engineering Team’s Velocity with Smart Tool Investments","detectedLanguage":"en","latestVersion":"8309afbf2000","latestPublishedVersion":"8309afbf2000","hasUnpublishedEdits":false,"latestRev":387,"createdAt":1681712253156,"updatedAt":1682568990652,"acceptedAt":0,"firstPublishedAt":1682526938305,"latestPublishedAt":1682526938305,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"A proactive approach for increasing your team’s efficiency and velocity using modern tools and services.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*1k-mWxNYERonjiEzTLJT-Q.png","filter":"","backgroundSize":"","originalWidth":1920,"originalHeight":800,"strategy":"resample","height":0,"width":0},"wordCount":854,"imageCount":2,"readingTime":3.6059748427672957,"subtitle":"A proactive approach for increasing your team’s efficiency and velocity using modern tools and services.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":3,"isBookmarked":false,"tags":[{"slug":"engineering-mangement","name":"Engineering Mangement","postCount":4905,"metadata":{"postCount":4905,"coverImage":{"id":"0*Fl32RPArwUvmBK3s","originalWidth":1600,"originalHeight":1191,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"platform","name":"Platform","postCount":12737,"metadata":{"postCount":12737,"coverImage":{"id":"1*ybfNMEF-ydEZ47tqPlh0Xw.jpeg","originalWidth":1086,"originalHeight":900,"isFeatured":true,"alt":"IMAGE: Two ads for Amazon Basics batteries on top of a search in Amazon Spain"}},"type":"Tag"},{"slug":"startup","name":"Startup","postCount":645820,"metadata":{"postCount":645820,"coverImage":{"id":"1*22RsJ-7NHWOqbpqOFCv8Vw.jpeg"}},"type":"Tag"},{"slug":"developer-productivity","name":"Developer Productivity","postCount":1373,"metadata":{"postCount":1373,"coverImage":{"id":"1*32LkZ-TZ95vvhzJ89hckbg.jpeg","originalWidth":3200,"originalHeight":1724,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://www.env0.com/","alts":[],"httpStatus":200},{"url":"https://swimm.io/","alts":[],"httpStatus":200},{"url":"https://www.faros.ai/","alts":[],"httpStatus":200},{"url":"https://www.redefine.dev/","alts":[],"httpStatus":200},{"url":"https://www.acumen.io/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/","alts":[],"httpStatus":200},{"url":"https://velocity.tech/","alts":[],"httpStatus":200},{"url":"https://www.raftt.io/","alts":[],"httpStatus":200},{"url":"https://metalbear.co/","alts":[],"httpStatus":200},{"url":"https://www.tabnine.com/","alts":[],"httpStatus":200},{"url":"https://www.codium.ai/","alts":[],"httpStatus":200},{"url":"https://linearb.io/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1682526939056},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":7,"sectionCount":2,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"boost-your-engineering-teams-velocity-with-smart-tool-investments","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"boost-your-engineering-teams-velocity-with-smart-tool-investments-a0c7dde28bd4","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*1k-mWxNYERonjiEzTLJT-Q.png","originalWidth":1920,"originalHeight":800,"isFeatured":true}},{"name":"67a2","type":3,"text":"Boost Your Engineering Team’s Velocity with Smart Tool Investments","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"A proactive approach for increasing your team’s efficiency and velocity using modern tools and services."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"11508011fbae","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"67a2","type":3,"text":"Boost Your Engineering Team’s Velocity with Smart Tool Investments","markups":[]},{"name":"7b1f","type":4,"text":"Ready to take your engineering ship to Warp 9? (by Christopher Chiu-Tabet)","markups":[],"layout":1,"metadata":{"id":"1*1k-mWxNYERonjiEzTLJT-Q.png","originalWidth":1920,"originalHeight":800,"isFeatured":true}},{"name":"a15e","type":1,"text":"Nowadays, everyone is examining how to increase efficiencies and cut costs to improve their bottom line. Although it may seem counterintuitive, engineering managers can help increase efficiencies by investing in tools for their engineering group that can help increase the team’s velocity and therefore increase efficiencies and the bottom line.","markups":[{"type":1,"start":199,"end":209}]},{"name":"bd2a","type":1,"text":"…","markups":[]}],"sections":[{"name":"a980","startIndex":0}]},"isFullContent":false,"subtitle":"A proactive approach for increasing your team’s efficiency and velocity using modern tools and services."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"1e065fbbc29f":{"id":"1e065fbbc29f","versionId":"ffb3da8f220b","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"Create Reusable Tests and Scripts with OpenAPI Reusable Components","detectedLanguage":"en","latestVersion":"ffb3da8f220b","latestPublishedVersion":"ffb3da8f220b","hasUnpublishedEdits":false,"latestRev":206,"createdAt":1676306617898,"updatedAt":1676307546517,"acceptedAt":0,"firstPublishedAt":1675967677618,"latestPublishedAt":1676307546143,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Storing Postman scripts within reusable components in an OpenAPI definition","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*crOBs2bpXWoeda4E.jpg","filter":"","backgroundSize":"","originalWidth":1632,"originalHeight":864,"strategy":"resample","height":0,"width":0},"wordCount":1088,"imageCount":8,"readingTime":5.238993710691824,"subtitle":"Storing Postman scripts within reusable components in an OpenAPI definition","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":2,"isBookmarked":false,"tags":[{"slug":"javascript","name":"JavaScript","postCount":286672,"metadata":{"postCount":286672,"coverImage":{"id":"1*INT5dtKotyP0at13wyjJLg.png","originalWidth":3840,"originalHeight":2160,"isFeatured":true}},"type":"Tag"},{"slug":"postman","name":"Postman","postCount":3895,"metadata":{"postCount":3895,"coverImage":{"id":"1*q8mehtnD0r_dSOgGeg1pkQ.png","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":56656,"metadata":{"postCount":56656,"coverImage":{"id":"1*y38k5yLTPXWMtQoWyBuy5w.jpeg","originalWidth":1119,"originalHeight":1280}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://learning.postman.com/docs/sending-requests/variables/#variable-scopes","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/designing-and-developing-your-api/creating-an-api/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/sending-requests/managing-environments/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/writing-scripts/intro-to-scripts/#execution-order-of-scripts","alts":[],"httpStatus":200},{"url":"https://god.gw.postman.com/run-collection/1559645-09569095-9ffb-4aba-bbca-92b2954aabde?action=collection%2Ffork&collection-url=entityId%3D1559645-09569095-9ffb-4aba-bbca-92b2954aabde%26entityType%3Dcollection%26workspaceId%3Daa5fb3b8-0090-4b5e-b3b4-fa5c1f2d080d","alts":[],"httpStatus":200},{"url":"https://www.postman.com/postman/workspace/postman-answers/collection/1559645-09569095-9ffb-4aba-bbca-92b2954aabde?ctx=documentation","alts":[],"httpStatus":200},{"url":"https://www.postman.com/postman/workspace/postman-answers/api/5a01c61f-e5e1-4876-bde6-0c7c924e8282/version/3a97617a-c592-4f12-a766-fde92905d39b?tab=define","alts":[],"httpStatus":200},{"url":"https://www.postman.com/postman/workspace/postman-public-workspace/request/12959542-748c0367-6e64-4b9c-9f02-a2b8d297dc38","alts":[],"httpStatus":200},{"url":"https://www.postman.com/api-first/","alts":[],"httpStatus":200},{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/sending-requests/grpc/postman-sandbox-api/#sending-http-request-from-scripts","alts":[],"httpStatus":200},{"url":"https://go.postman.co/settings/me/api-keys","alts":[],"httpStatus":401},{"url":"https://cdnjs.cloudflare.com/ajax/libs/js-yaml/3.13.1/js-yaml.js","alts":[],"httpStatus":200},{"url":"https://youtu.be/YRzpziA35Mg?t=1696","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?t=1696&v=YRzpziA35Mg&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?t=1696&v=YRzpziA35Mg&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://blog.postman.com/solving-problems-together-with-postman-workspaces/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/create-reusable-tests-and-scripts-with-openapi-reusable-components/","alts":[],"httpStatus":200},{"url":"https://www.npmjs.com/package/js-yaml","alts":[],"httpStatus":200},{"url":"https://www.popularmechanics.com/technology/a20762221/an-early-hacker-used-a-cereal-box-whistle-to-take-over-phone-lines/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1676307548100},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":51,"sectionCount":2,"readingList":0,"topics":[{"topicId":"63c6f1f93ee","slug":"javascript","createdAt":1493945704961,"deletedAt":0,"image":{"id":"1*5UyyDJ1ESD11yQNd1UVAaQ@2x.jpeg","originalWidth":5472,"originalHeight":3648},"name":"Javascript","description":"An ode to code.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Javascript News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"create-reusable-tests-and-scripts-with-openapi-reusable-components","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"https://blog.postman.com/create-reusable-tests-and-scripts-with-openapi-reusable-components/","importedPublishedAt":1675967651000,"visibility":0,"uniqueSlug":"create-reusable-tests-and-scripts-with-openapi-reusable-components-1e065fbbc29f","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*crOBs2bpXWoeda4E.jpg","originalWidth":1632,"originalHeight":864,"isFeatured":true}},{"name":"0c9a","type":3,"text":"Create Reusable Tests and Scripts with OpenAPI Reusable Components","markups":[],"alignment":1},{"name":"f14e","type":13,"text":"Storing Postman scripts within…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Storing Postman scripts within reusable components in an OpenAPI definition"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"b3a72f583156","webCanonicalUrl":"https://blog.postman.com/create-reusable-tests-and-scripts-with-openapi-reusable-components/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"63c6f1f93ee","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"0c9a","type":3,"text":"Create Reusable Tests and Scripts with OpenAPI Reusable Components","markups":[]},{"name":"f14e","type":13,"text":"Storing Postman scripts within reusable components in an OpenAPI definition","markups":[]},{"name":"e8e4","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*crOBs2bpXWoeda4E.jpg","originalWidth":1632,"originalHeight":864,"isFeatured":true}},{"name":"afd0","type":1,"text":"In programming, “hacking” has historically meant making something do what it wasn’t originally intended to do, like using a whistle from a cereal box prize to play the tone into a pay phone to get free long distance calls. Today, it also refers to finding an inelegant solution to a…","markups":[{"type":3,"start":116,"end":155,"href":"https://www.popularmechanics.com/technology/a20762221/an-early-hacker-used-a-cereal-box-whistle-to-take-over-phone-lines/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"aa83","startIndex":0}]},"isFullContent":false,"subtitle":"Storing Postman scripts within reusable components in an OpenAPI definition"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"b32da63f4f94":{"id":"b32da63f4f94","versionId":"d5c5a9021aff","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"Set Up a WebSockets Server in Node.js","detectedLanguage":"en","latestVersion":"d5c5a9021aff","latestPublishedVersion":"d5c5a9021aff","hasUnpublishedEdits":false,"latestRev":249,"createdAt":1675268947318,"updatedAt":1675311354857,"acceptedAt":0,"firstPublishedAt":1675266919106,"latestPublishedAt":1675269630143,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"And use Postman to send and receive messages across the WebSocket connection","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*6DO93c3_KL111OXr.jpg","filter":"","backgroundSize":"","originalWidth":1632,"originalHeight":865,"strategy":"resample","height":0,"width":0},"wordCount":926,"imageCount":9,"readingTime":4.694339622641509,"subtitle":"And use Postman to send and receive messages across the WebSocket connection","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":1,"isBookmarked":false,"tags":[{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"websocket","name":"Websocket","postCount":3241,"metadata":{"postCount":3241,"coverImage":{"id":"1*UwViNRFdaFH2osbcBeOhPw.png","originalWidth":800,"originalHeight":400,"isFeatured":true,"alt":"WebSocket with PHP"}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"nodejs","name":"Nodejs","postCount":61371,"metadata":{"postCount":61371,"coverImage":{"id":"1*32_J-Nawc-86q1vUOrQBvw.png","originalWidth":1366,"originalHeight":239,"isFeatured":true}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":56656,"metadata":{"postCount":56656,"coverImage":{"id":"1*y38k5yLTPXWMtQoWyBuy5w.jpeg","originalWidth":1119,"originalHeight":1280}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://nodejs.org/en/download/","alts":[],"httpStatus":200},{"url":"https://quickstarts.postman.com/guide/websockets_node/index.html","alts":[],"httpStatus":200},{"url":"https://www.postman.com/postman/workspace/websockets/documentation/14057978-712d684f-c252-4bd9-a7a6-6a893e41adea","alts":[],"httpStatus":200},{"url":"https://www.postman.com/state-of-api/api-technologies/#api-technologies","alts":[],"httpStatus":200},{"url":"https://code.visualstudio.com/download","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/sending-requests/websocket/websocket/","alts":[],"httpStatus":200},{"url":"https://www.youtube.com/watch?v=e__oWJ4wNtw","alts":[{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=e__oWJ4wNtw&feature=applinks"},{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=e__oWJ4wNtw&feature=applinks"}],"httpStatus":200},{"url":"https://youtu.be/H-7EZVj9D-k","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=H-7EZVj9D-k&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=H-7EZVj9D-k&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://blog.postman.com/set-up-a-websockets-server-in-node-js-postman/","alts":[],"httpStatus":200},{"url":"https://www.rfc-editor.org/rfc/rfc6455","alts":[],"httpStatus":200},{"url":"https://www.npmjs.com/package/ws","alts":[],"httpStatus":200},{"url":"https://www.npmjs.com/package/systeminformation","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1675269632278},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":1,"sectionCount":2,"readingList":0,"topics":[]},"coverless":true,"slug":"set-up-a-websockets-server-in-node-js","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"https://blog.postman.com/set-up-a-websockets-server-in-node-js-postman/","importedPublishedAt":1675266885000,"visibility":0,"uniqueSlug":"set-up-a-websockets-server-in-node-js-b32da63f4f94","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*6DO93c3_KL111OXr.jpg","originalWidth":1632,"originalHeight":865,"isFeatured":true}},{"name":"d963","type":3,"text":"Set Up a WebSockets Server in Node.js","markups":[],"alignment":1},{"name":"b7f2","type":13,"text":"And use Postman to send and receive messages across the…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"And use Postman to send and receive messages across the WebSocket connection"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"8cf46817e92a","webCanonicalUrl":"https://blog.postman.com/set-up-a-websockets-server-in-node-js-postman/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"d963","type":3,"text":"Set Up a WebSockets Server in Node.js","markups":[]},{"name":"b7f2","type":13,"text":"And use Postman to send and receive messages across the WebSocket connection","markups":[]},{"name":"6e9a","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*6DO93c3_KL111OXr.jpg","originalWidth":1632,"originalHeight":865,"isFeatured":true}},{"name":"f147","type":1,"text":"The WebSocket protocol provides a way to exchange data between a client and server over a persistent connection. The data can be passed in both directions with low latency and overhead, and without breaking the connection. This means the server can independently send data to the client without the client…","markups":[{"type":3,"start":4,"end":22,"href":"https://www.rfc-editor.org/rfc/rfc6455","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"e253","startIndex":0}]},"isFullContent":false,"subtitle":"And use Postman to send and receive messages across the WebSocket connection"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"1a8b08d79fca":{"id":"1a8b08d79fca","versionId":"80341b1b1c6d","creatorId":"c469aa093a35","homeCollectionId":"410f2fbc015d","title":"Postman Essentials: Exploring the Collection Format","detectedLanguage":"en","latestVersion":"80341b1b1c6d","latestPublishedVersion":"80341b1b1c6d","hasUnpublishedEdits":false,"latestRev":149,"createdAt":1666308363620,"updatedAt":1666323848940,"acceptedAt":0,"firstPublishedAt":1664435147638,"latestPublishedAt":1666323847430,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"If you’re one of the 20 million people who use Postman, then you’ve worked with Postman Collections in one way or another. Collections are…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*0Tkt-B9ruk43Bzhx.jpeg","filter":"","backgroundSize":"","originalWidth":1632,"originalHeight":864,"strategy":"resample","height":0,"width":0},"wordCount":1251,"imageCount":2,"readingTime":5.104088050314465,"subtitle":"If you’re one of the 20 million people who use Postman, then you’ve worked with Postman Collections in one way or another. Collections are…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":4,"isBookmarked":false,"tags":[{"slug":"collection","name":"Collection","postCount":6017,"metadata":{"postCount":6017,"coverImage":{"id":"1*b4gWLb4Qon_CGqS7wi6o2w.png","originalWidth":687,"originalHeight":343,"isFeatured":true}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"postman-collections","name":"Postman Collections","postCount":216,"metadata":{"postCount":216,"coverImage":{"id":"1*_yqACAxoNSbX2-iahZm2-Q.png","originalWidth":973,"originalHeight":623,"isFeatured":true}},"type":"Tag"},{"slug":"postman","name":"Postman","postCount":3895,"metadata":{"postCount":3895,"coverImage":{"id":"1*q8mehtnD0r_dSOgGeg1pkQ.png","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://schema.postman.com/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman-cli/postman-cli-overview/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/designing-and-developing-your-api/the-api-workflow/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/getting-started/importing-and-exporting-data/#exporting-postman-data","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/running-collections/intro-to-collection-runs/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/collection/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/api-first/","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/postman-runtime","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/newman","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/schemas","alts":[],"httpStatus":200},{"url":"https://www.youtube.com/watch?v=wdLvXKkXhLk","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=wdLvXKkXhLk&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=wdLvXKkXhLk&feature=applinks"}],"httpStatus":200},{"url":"https://blog.postman.com/postman-essentials-exploring-the-collection-format/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/postman-now-supports-openapi-3-1/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/api-lifecycle-blueprint/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/celebrating-20-million-postman-users/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1666323848422},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":5,"sectionCount":2,"readingList":0,"topics":[]},"coverless":true,"slug":"postman-essentials-exploring-the-collection-format","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"https://blog.postman.com/postman-essentials-exploring-the-collection-format/","importedPublishedAt":1664435146000,"visibility":0,"uniqueSlug":"postman-essentials-exploring-the-collection-format-1a8b08d79fca","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*0Tkt-B9ruk43Bzhx.jpeg","originalWidth":1632,"originalHeight":864,"isFeatured":true}},{"name":"4dda","type":3,"text":"Postman Essentials: Exploring the Collection Format","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"If you’re one of the 20 million people who use Postman, then you’ve worked with Postman Collections in one way or another. Collections are…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"fba8f220c67f","webCanonicalUrl":"https://blog.postman.com/postman-essentials-exploring-the-collection-format/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"4dda","type":3,"text":"Postman Essentials: Exploring the Collection Format","markups":[]},{"name":"34e7","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*0Tkt-B9ruk43Bzhx.jpeg","originalWidth":1632,"originalHeight":864,"isFeatured":true}},{"name":"edd1","type":1,"text":"If you’re one of the 20 million people who use Postman, then you’ve worked with Postman Collections in one way or another. Collections are a great way to organize API requests, and they allow developers to easily create, share, and collaborate on different APIs. Collections can be used for almost…","markups":[{"type":3,"start":21,"end":54,"href":"https://blog.postman.com/celebrating-20-million-postman-users/","title":"","rel":"","anchorType":0},{"type":3,"start":80,"end":99,"href":"https://www.postman.com/collection/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"2e1c","startIndex":0}]},"isFullContent":false,"subtitle":"If you’re one of the 20 million people who use Postman, then you’ve worked with Postman Collections in one way or another. Collections are…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"142aab534e6b":{"id":"142aab534e6b","versionId":"990d371b7e0b","creatorId":"fa5cf0bcd8ab","homeCollectionId":"410f2fbc015d","title":"To Build (an SDK), or not to Build — that is the question!","detectedLanguage":"en","latestVersion":"990d371b7e0b","latestPublishedVersion":"990d371b7e0b","hasUnpublishedEdits":false,"latestRev":229,"createdAt":1659284189953,"updatedAt":1681803816693,"acceptedAt":0,"firstPublishedAt":1659287448205,"latestPublishedAt":1660066879094,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Are you considering building an SDK for your SaaS API? Here are essential considerations to keep in mind before creating an SDK.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*ZYHU9F8LrS6ybtJK","filter":"","backgroundSize":"","originalWidth":723,"originalHeight":366,"strategy":"resample","height":0,"width":0},"wordCount":1244,"imageCount":2,"readingTime":5.077672955974843,"subtitle":"Are you considering building an SDK for your SaaS API? Here are essential considerations to keep in mind before creating an SDK.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":9,"isBookmarked":false,"tags":[{"slug":"sdk","name":"Sdk","postCount":2371,"metadata":{"postCount":2371,"coverImage":{"id":"1*26-CV8AmHz7ZIXDel0MI-g.png","originalWidth":1238,"originalHeight":427,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"software-engineering","name":"Software Engineering","postCount":116547,"metadata":{"postCount":116547,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"saas","name":"SaaS","postCount":48125,"metadata":{"postCount":48125,"coverImage":{"id":"0*ga7w1WSRVH_T3eKy.png","originalWidth":800,"originalHeight":420,"isFeatured":true,"externalSrc":"https://cdn.hashnode.com/res/hashnode/image/upload/v1729605925988/3d775842-98e1-41ef-9547-68a739f16a45.png","alt":"Title Image"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://www.openapis.org/","alts":[],"httpStatus":200},{"url":"https://openapi-generator.tech/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Software_development_kit","alts":[],"httpStatus":200},{"url":"https://www.postman.com/lp/api-first-company/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/how-do-you-become-api-first-company/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1660066879773},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":61,"sectionCount":3,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"to-build-an-sdk-or-not-to-build-that-is-the-question","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"to-build-an-sdk-or-not-to-build-that-is-the-question-142aab534e6b","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*ZYHU9F8LrS6ybtJK","originalWidth":723,"originalHeight":366,"isFeatured":true}},{"name":"1ec3","type":3,"text":"To Build (an SDK), or not to Build — that is the question!","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Are you considering building an SDK for your SaaS API? Here are essential considerations to keep in mind before creating an SDK."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"1ec3","type":3,"text":"To Build (an SDK), or not to Build — that is the question!","markups":[]},{"name":"aa84","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*ZYHU9F8LrS6ybtJK","originalWidth":723,"originalHeight":366,"isFeatured":true}},{"name":"1c87","type":1,"text":"If you are building a SaaS product, you most likely also provide an API for your product.","markups":[]},{"name":"249f","type":1,"text":"At some point, you will probably consider whether you should also provide your customers with an SDK for the API.","markups":[{"type":3,"start":97,"end":100,"href":"https://en.wikipedia.org/wiki/Software_development_kit","title":"","rel":"","anchorType":0}]},{"name":"0b60","type":1,"text":"In this article, I will list the advantages of supporting SDKs and the…","markups":[]}],"sections":[{"name":"709d","startIndex":0}]},"isFullContent":false,"subtitle":"Are you considering building an SDK for your SaaS API? Here are essential considerations to keep in mind before creating an SDK."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"5011c9dfb0fa":{"id":"5011c9dfb0fa","versionId":"5c125350e667","creatorId":"d5ebb98cbc1b","homeCollectionId":"410f2fbc015d","title":"How complex can Authorization get?","detectedLanguage":"en","latestVersion":"5c125350e667","latestPublishedVersion":"5c125350e667","hasUnpublishedEdits":false,"latestRev":1788,"createdAt":1647626041542,"updatedAt":1648260957013,"acceptedAt":0,"firstPublishedAt":1647781573437,"latestPublishedAt":1647785537983,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Builds on the Authorization component of Identity and Access Management system from zero to how systems implement today","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*on8uU-OVzSFIyLB2gRk2nw.jpeg","filter":"","backgroundSize":"","originalWidth":1908,"originalHeight":1272,"strategy":"resample","height":0,"width":0},"wordCount":1768,"imageCount":1,"readingTime":6.871698113207548,"subtitle":"Builds on the Authorization component of Identity and Access Management system from zero to how systems implement today","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":4,"isBookmarked":false,"tags":[{"slug":"authorization","name":"Authorization","postCount":2746,"metadata":{"postCount":2746,"coverImage":{"id":"0*LD5JQuNpW5rVFvNS.png","originalWidth":1024,"originalHeight":768,"isFeatured":true}},"type":"Tag"},{"slug":"access-control","name":"Access Control","postCount":2130,"metadata":{"postCount":2130,"coverImage":{"id":"1*pLjpyhDY1FNX8e8j_Qub7w.jpeg","originalWidth":1024,"originalHeight":553,"isFeatured":true}},"type":"Tag"},{"slug":"access-management","name":"Access Management","postCount":726,"metadata":{"postCount":726,"coverImage":{"id":"1*OcLJrUZfWsLEVdh31pe16Q.png","originalWidth":2880,"originalHeight":1624,"isFeatured":true}},"type":"Tag"},{"slug":"identity-and-access","name":"Identity And Access","postCount":417,"metadata":{"postCount":417,"coverImage":{"id":"1*eaZjefJHEd4XcwO7I-0eCg.png","originalWidth":800,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"information-security","name":"Information Security","postCount":17074,"metadata":{"postCount":17074,"coverImage":{"id":"1*uVdXxcW8rOSC9H2DCqn34g.png","originalWidth":1307,"originalHeight":695,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://medium.com","alts":[],"httpStatus":200},{"url":"https://www.freeimages.com/download/private-property-no-trespassing-1205389","alts":[],"httpStatus":200},{"url":"https://csrc.nist.gov/glossary/term/separation_of_duty","alts":[],"httpStatus":200},{"url":"https://ieeexplore.ieee.org/document/1451869","alts":[],"httpStatus":200},{"url":"https://owasp.org/www-project-top-ten/","alts":[],"httpStatus":200},{"url":"https://owasp.org/www-project-api-security/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1647785539874},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":26,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"how-complex-can-authorization-get","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"how-complex-can-authorization-get-5011c9dfb0fa","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*on8uU-OVzSFIyLB2gRk2nw.jpeg","originalWidth":1908,"originalHeight":1272,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"How complex can Authorization get?","alignment":1},{"name":"previewSubtitle","type":13,"text":"Builds on the Authorization component of Identity and Access…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Builds on the Authorization component of Identity and Access Management system from zero to how systems implement today"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"b610be00fd66","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"6b37","type":3,"text":"How complex can Authorization get?","markups":[]},{"name":"e7b6","type":4,"text":"source: https://www.freeimages.com/download/private-property-no-trespassing-1205389","markups":[{"type":3,"start":8,"end":83,"href":"https://www.freeimages.com/download/private-property-no-trespassing-1205389","title":"","rel":"nofollow","anchorType":0}],"layout":1,"metadata":{"id":"1*on8uU-OVzSFIyLB2gRk2nw.jpeg","originalWidth":1908,"originalHeight":1272,"isFeatured":true}},{"name":"f70a","type":1,"text":"Identity and Access Management system deals with “who” should get “what” level of access to an object (entity) or a function. The subsystem that defines “who” is called Authentication (Identity), while the subsystem that defines “what” level of access is called Authorization (Access).","markups":[{"type":1,"start":0,"end":1},{"type":1,"start":13,"end":14},{"type":1,"start":20,"end":21},{"type":1,"start":262,"end":275}]},{"name":"31c2","type":1,"text":"Building an IAM system can get very…","markups":[{"type":3,"start":128,"end":163,"href":"https://owasp.org/www-project-top-ten/","title":"","rel":"","anchorType":0},{"type":3,"start":168,"end":200,"href":"https://owasp.org/www-project-api-security/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"42e3","startIndex":0}]},"isFullContent":false,"subtitle":"Builds on the Authorization component of Identity and Access Management system from zero to how systems implement today"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"99aba45a572b":{"id":"99aba45a572b","versionId":"d56d68e32daa","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"How to build a Jamstack application in Postman","detectedLanguage":"en","latestVersion":"d56d68e32daa","latestPublishedVersion":"d56d68e32daa","hasUnpublishedEdits":false,"latestRev":466,"createdAt":1642711466151,"updatedAt":1644028514421,"acceptedAt":0,"firstPublishedAt":1643645001941,"latestPublishedAt":1643645001941,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Learn to JAM with scripts, mock servers, and the visualizer","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*KSMBMo2Mzyrqgdqk.jpg","filter":"","backgroundSize":"","originalWidth":1632,"originalHeight":864,"strategy":"resample","height":0,"width":0},"wordCount":1101,"imageCount":7,"readingTime":5.2047169811320755,"subtitle":"Learn to JAM with scripts, mock servers, and the visualizer","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":6,"isBookmarked":false,"tags":[{"slug":"jamstack","name":"Jamstack","postCount":1089,"metadata":{"postCount":1089,"coverImage":{"id":"0*3Hbz5rh_Cv_qZmtF","originalWidth":3713,"originalHeight":5569,"unsplashPhotoId":"9RGPG_ksS3Q"}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"coding","name":"Coding","postCount":147692,"metadata":{"postCount":147692,"coverImage":{"id":"1*6d7Z0hJATq9WTTx_rM5RcA.jpeg","originalWidth":750,"originalHeight":409}},"type":"Tag"},{"slug":"javascript","name":"JavaScript","postCount":286672,"metadata":{"postCount":286672,"coverImage":{"id":"1*INT5dtKotyP0at13wyjJLg.png","originalWidth":3840,"originalHeight":2160,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://www.netlify.com/","alts":[],"httpStatus":200},{"url":"https://go.postman.co/search?q=visualizer&scope=all&type=all","alts":[],"httpStatus":401},{"url":"https://nextjs.org/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/sending-requests/visualizer/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/setting-up-mock/#creating-a-mock-from-a-collection","alts":[],"httpStatus":200},{"url":"https://god.gw.postman.com/run-collection/13191452-9e1d8008-416a-476b-8e84-6650cfbd6f87?action=collection%2Ffork&collection-url=entityId%3D13191452-9e1d8008-416a-476b-8e84-6650cfbd6f87%26entityType%3Dcollection%26workspaceId%3D02d1963b-f4c4-49cc-bd6b-13f7015dd726#?env%5BMock%20data%5D=W3sia2V5IjoidXJsIiwidmFsdWUiOiJodHRwczovL2Y3OTNiYWU1LTliNjMtNGYzMC1iOWU3LTNkYTkwMTVhYmQ2Ny5tb2NrLnBzdG1uLmlvIiwiZW5hYmxlZCI6dHJ1ZSwidHlwZSI6InRleHQiLCJzZXNzaW9uVmFsdWUiOiJodHRwczovL2Y3OTNiYWU1LTliNjMtNGYzMC1iOWU3LTNkYTkwMTVhYmQ2Ny5tb2NrLnBzdG1uLmlvIiwic2Vzc2lvbkluZGV4IjowfV0=","alts":[],"httpStatus":200},{"url":"https://remotesynthesis.com/blog/jamstack-in-2021","alts":[],"httpStatus":200},{"url":"https://vercel.com/","alts":[],"httpStatus":200},{"url":"https://www.gatsbyjs.com/","alts":[],"httpStatus":200},{"url":"https://community.postman.com/t/adding-external-libraries-to-postman/1971/6","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1643645002460},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":8,"sectionCount":1,"readingList":0,"topics":[{"topicId":"63c6f1f93ee","slug":"javascript","createdAt":1493945704961,"deletedAt":0,"image":{"id":"1*5UyyDJ1ESD11yQNd1UVAaQ@2x.jpeg","originalWidth":5472,"originalHeight":3648},"name":"Javascript","description":"An ode to code.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Javascript News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"how-to-build-a-jamstack-application-in-postman","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"how-to-build-a-jamstack-application-in-postman-99aba45a572b","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*KSMBMo2Mzyrqgdqk.jpg","originalWidth":1632,"originalHeight":864,"isFeatured":true}},{"name":"a590","type":3,"text":"How to build a Jamstack application in Postman","markups":[],"alignment":1},{"name":"a485","type":13,"text":"Learn to JAM with scripts, mock servers, and the…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Learn to JAM with scripts, mock servers, and the visualizer"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"f97f0f5afcc","webCanonicalUrl":"https://blog.postman.com/how-to-build-jamstack-application-in-postman/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"63c6f1f93ee","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"a590","type":3,"text":"How to build a Jamstack application in Postman","markups":[]},{"name":"a485","type":13,"text":"Learn to JAM with scripts, mock servers, and the visualizer","markups":[]},{"name":"9077","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*KSMBMo2Mzyrqgdqk.jpg","originalWidth":1632,"originalHeight":864,"isFeatured":true}},{"name":"440e","type":1,"text":"Jamstack originally referenced a web architecture composed of JAM: JavaScript, APIs, and Markup. Websites could be delivered statically, such as serving HTML from static hosting, while providing dynamic content and an interactive experience through JavaScript and APIs.","markups":[]},{"name":"5071","type":7,"text":"“A modern web development architecture based on client-side JavaScript, reusable APIs, and prebuilt…","markups":[]}],"sections":[{"name":"07df","startIndex":0}]},"isFullContent":false,"subtitle":"Learn to JAM with scripts, mock servers, and the visualizer"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"c7b15c03f306":{"id":"c7b15c03f306","versionId":"1d1a1a39ff4a","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"Dynamically create custom environments with code","detectedLanguage":"en","latestVersion":"1d1a1a39ff4a","latestPublishedVersion":"1d1a1a39ff4a","hasUnpublishedEdits":false,"latestRev":713,"createdAt":1637363099225,"updatedAt":1641277807911,"acceptedAt":0,"firstPublishedAt":1638402983534,"latestPublishedAt":1638402983534,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Reduce time to first call (TTFC) for your public API via Run in Postman","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*et303LkbvbCYvq_wrBFO_w.png","filter":"","backgroundSize":"","originalWidth":2776,"originalHeight":1778,"strategy":"resample","height":0,"width":0},"wordCount":950,"imageCount":4,"readingTime":4.284905660377358,"subtitle":"Reduce time to first call (TTFC) for your public API via Run in Postman","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":2,"isBookmarked":false,"tags":[{"slug":"javascript","name":"JavaScript","postCount":286672,"metadata":{"postCount":286672,"coverImage":{"id":"1*INT5dtKotyP0at13wyjJLg.png","originalWidth":3840,"originalHeight":2160,"isFeatured":true}},"type":"Tag"},{"slug":"coding","name":"Coding","postCount":147692,"metadata":{"postCount":147692,"coverImage":{"id":"1*6d7Z0hJATq9WTTx_rM5RcA.jpeg","originalWidth":750,"originalHeight":409}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"ux","name":"UX","postCount":210658,"metadata":{"postCount":210658,"coverImage":{"id":"1*6NX11phaaLFxf-DDJhJ_KQ.jpeg","originalWidth":2529,"originalHeight":2961,"isFeatured":true,"focusPercentX":49,"focusPercentY":34}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://god.gw.postman.com/run-collection/1559645-a509fe32-9158-420c-9a15-1bf31c289946?action=collection%2Ffork&collection-url=entityId%3D1559645-a509fe32-9158-420c-9a15-1bf31c289946%26entityType%3Dcollection%26workspaceId%3D152199ce-48dd-4b46-b201-9e4fcb6f75db","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/publishing-your-api/run-in-postman/creating-run-button/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/publishing-your-api/run-in-postman/run-button-API/","alts":[],"httpStatus":200},{"url":"https://github.com/loopDelicious/dynamic-rip-button","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/the-most-important-api-metric-is-time-to-first-call/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1638402984129},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":54,"sectionCount":1,"readingList":0,"topics":[{"topicId":"63c6f1f93ee","slug":"javascript","createdAt":1493945704961,"deletedAt":0,"image":{"id":"1*5UyyDJ1ESD11yQNd1UVAaQ@2x.jpeg","originalWidth":5472,"originalHeight":3648},"name":"Javascript","description":"An ode to code.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Javascript News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"dynamically-create-custom-environments-with-code","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"dynamically-create-custom-environments-with-code-c7b15c03f306","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*et303LkbvbCYvq_wrBFO_w.png","originalWidth":2776,"originalHeight":1778,"isFeatured":true}},{"name":"ae04","type":3,"text":"Dynamically create custom environments with code","markups":[],"alignment":1},{"name":"4255","type":13,"text":"Reduce time to first call (TTFC) for your public API…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Reduce time to first call (TTFC) for your public API via Run in Postman"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"cafc0a54a303","webCanonicalUrl":"https://blog.postman.com/how-to-dynamically-create-custom-environments-with-code","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"decb52b64abf","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"ae04","type":3,"text":"Dynamically create custom environments with code","markups":[]},{"name":"4255","type":13,"text":"Reduce time to first call (TTFC) for your public API via Run in Postman","markups":[]},{"name":"1f4d","type":1,"text":"Every extra step you handle for your developers saves them time and impacts their time to first call (TTFC), the most important metric for public APIs. The Run in Postman button is a powerful way to reduce complexity for your developers. It’s not a new feature, but if you’ve been…","markups":[{"type":3,"start":82,"end":107,"href":"https://blog.postman.com/the-most-important-api-metric-is-time-to-first-call/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":156,"end":177,"href":"https://learning.postman.com/docs/publishing-your-api/run-in-postman/creating-run-button/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"bff0","startIndex":0}]},"isFullContent":false,"subtitle":"Reduce time to first call (TTFC) for your public API via Run in Postman"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"8476bd6fa51b":{"id":"8476bd6fa51b","versionId":"3a1bb6061cb7","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"Better Practices for Git Version Control in Postman","detectedLanguage":"en","latestVersion":"3a1bb6061cb7","latestPublishedVersion":"3a1bb6061cb7","hasUnpublishedEdits":false,"latestRev":165,"createdAt":1638552720105,"updatedAt":1641310487814,"acceptedAt":0,"firstPublishedAt":1635957125000,"latestPublishedAt":1638553334184,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Manage collaboration within your team and community so that you don’t release breaking changes","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*l7YRcpv0_lfh6iBB.jpg","filter":"","backgroundSize":"","originalWidth":2000,"originalHeight":1058,"strategy":"resample","height":0,"width":0},"wordCount":1155,"imageCount":6,"readingTime":5.308490566037736,"subtitle":"Manage collaboration within your team and community so that you don’t release breaking changes","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":2,"isBookmarked":false,"tags":[{"slug":"git","name":"Git","postCount":31764,"metadata":{"postCount":31764,"coverImage":{"id":"1*X8O7vfhBPZzZ9WsN0HorCQ.jpeg","originalWidth":832,"originalHeight":448,"isFeatured":true}},"type":"Tag"},{"slug":"version-control","name":"Version Control","postCount":4799,"metadata":{"postCount":4799,"coverImage":{"id":"1*X8O7vfhBPZzZ9WsN0HorCQ.jpeg","originalWidth":832,"originalHeight":448,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2493918,"metadata":{"postCount":2493918,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"collaboration","name":"Collaboration","postCount":30882,"metadata":{"postCount":30882,"coverImage":{"id":"1*-tQfp_nhlI8gjCn-xrRzYA.jpeg","originalWidth":1012,"originalHeight":992}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://learning.postman.com/docs/collaborating-in-postman/version-control-for-collections/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/integrations/available-integrations/bitbucket/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/collaborating-in-postman/roles-and-permissions/#roles-in-postman","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/designing-and-developing-your-api/versioning-an-api/#using-an-external-git-repository","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/collaborating-in-postman/version-control-for-collections/#creating-public-prs","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/integrations/available-integrations/gitlab/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/integrations/available-integrations/github/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/designing-and-developing-your-api/versioning-an-api/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/collaborating-in-postman/requesting-access-to-collections/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/twitter/workspace/twitter-s-public-workspace/overview","alts":[],"httpStatus":200},{"url":"https://developer.twitter.com/en/docs/twitter-api/early-access","alts":[],"httpStatus":200},{"url":"https://www.postman.com/pricing/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/better-practices-for-git-version-control-in-postman/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/introducing-postman-public-workspaces/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/streamline-api-development-lifecycle-with-postman-version-control/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1638553335153},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":3,"sectionCount":2,"readingList":0,"topics":[]},"coverless":true,"slug":"better-practices-for-git-version-control-in-postman","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"https://blog.postman.com/better-practices-for-git-version-control-in-postman/","importedPublishedAt":1635957125000,"visibility":0,"uniqueSlug":"better-practices-for-git-version-control-in-postman-8476bd6fa51b","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*l7YRcpv0_lfh6iBB.jpg","originalWidth":2000,"originalHeight":1058,"isFeatured":true}},{"name":"fe01","type":3,"text":"Better Practices for Git Version Control in Postman","markups":[],"alignment":1},{"name":"73fa","type":13,"text":"Manage collaboration within your team and…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Manage collaboration within your team and community so that you don’t release breaking changes"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/better-practices-for-git-version-control-in-postman/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"fe01","type":3,"text":"Better Practices for Git Version Control in Postman","markups":[]},{"name":"73fa","type":13,"text":"Manage collaboration within your team and community so that you don’t release breaking changes","markups":[]},{"name":"721e","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*l7YRcpv0_lfh6iBB.jpg","originalWidth":2000,"originalHeight":1058,"isFeatured":true}},{"name":"4030","type":1,"text":"Git is the most broadly used version control system among technology teams to track and manage changes. Postman previously shared how to use forking and merging, pull requests, and other Postman version control features to collaborate asynchronously. Let’s take a look at some better practices when implementing Git workflows in…","markups":[{"type":3,"start":187,"end":219,"href":"https://blog.postman.com/streamline-api-development-lifecycle-with-postman-version-control/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"516a","startIndex":0}]},"isFullContent":false,"subtitle":"Manage collaboration within your team and community so that you don’t release breaking changes"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"4acadab0f003":{"id":"4acadab0f003","versionId":"c3e15790164b","creatorId":"da19aa755173","homeCollectionId":"410f2fbc015d","title":"How (and Why) Postman Engineering Uses Foundation Teams","detectedLanguage":"en","latestVersion":"c3e15790164b","latestPublishedVersion":"c3e15790164b","hasUnpublishedEdits":false,"latestRev":88,"createdAt":1633917745300,"updatedAt":1641341822537,"acceptedAt":0,"firstPublishedAt":1633993685407,"latestPublishedAt":1633993685407,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Postman engineering structure: why foundation teams exist and how we are envisioning their future","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*KDEdyxVXhd1fkGF4.png","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":900,"strategy":"resample","height":0,"width":0},"wordCount":1096,"imageCount":4,"readingTime":4.835849056603774,"subtitle":"Postman engineering structure: why foundation teams exist and how we are envisioning their future","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":15,"isBookmarked":false,"tags":[{"slug":"organizational-design","name":"Organizational Design","postCount":770,"metadata":{"postCount":770,"coverImage":{"id":"0*abSbhvk8faPoGbVL","originalWidth":1500,"originalHeight":1000,"isFeatured":true,"alt":"Photo by Jason Goodman on Unsplash"}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":56656,"metadata":{"postCount":56656,"coverImage":{"id":"1*y38k5yLTPXWMtQoWyBuy5w.jpeg","originalWidth":1119,"originalHeight":1280}},"type":"Tag"},{"slug":"infrastructure-management","name":"Infrastructure Management","postCount":594,"metadata":{"postCount":594,"coverImage":{"id":"1*rMCkxX8LjO57ib88V7BKww.jpeg","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2493918,"metadata":{"postCount":2493918,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"software-engineering","name":"Software Engineering","postCount":116547,"metadata":{"postCount":116547,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://blog.postman.com/author/ankit/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/intro-to-apis-what-is-an-api/","alts":[],"httpStatus":200},{"url":"https://medium.com/pm101/spotify-squad-framework-part-i-8f74bcfcd761","alts":[{"type":3,"url":"medium://p/8f74bcfcd761"},{"type":2,"url":"medium://p/8f74bcfcd761"}],"httpStatus":200},{"url":"https://lethain.com/how-to-invest-technical-infrastructure/","alts":[],"httpStatus":200},{"url":"https://www.theguardian.com/technology/2018/apr/24/the-two-pizza-rule-and-the-secret-of-amazons-success","alts":[{"type":1,"url":"https://cdn.ampproject.org/c/s/amp.theguardian.com/technology/2018/apr/24/the-two-pizza-rule-and-the-secret-of-amazons-success"},{"type":2,"url":"gnmguardian://technology/2018/apr/24/the-two-pizza-rule-and-the-secret-of-amazons-success?contenttype=Article&source=applinks"}],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Domain-driven_design","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Web_framework","alts":[],"httpStatus":200},{"url":"https://www.postman.com/careers/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/postman-galaxy/keynote-with-postman-cofounder-ankit-sobti/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/how-postman-created-data-hiring-process/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/postman-engineering-microservices-example/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/how-postman-data-team-uses-hub-and-spoke-model/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1633996704225},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":148,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"how-and-why-postman-engineering-uses-foundation-teams","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"how-and-why-postman-engineering-uses-foundation-teams-4acadab0f003","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*KDEdyxVXhd1fkGF4.png","originalWidth":1600,"originalHeight":900,"isFeatured":true}},{"name":"6544","type":3,"text":"How (and Why) Postman Engineering Uses Foundation Teams","markups":[],"alignment":1},{"name":"eae3","type":13,"text":"Postman engineering structure: why foundation…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Postman engineering structure: why foundation teams exist and how we are envisioning their future"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/how-and-why-postman-engineering-uses-foundation-teams/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"decb52b64abf","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"6544","type":3,"text":"How (and Why) Postman Engineering Uses Foundation Teams","markups":[]},{"name":"eae3","type":13,"text":"Postman engineering structure: why foundation teams exist and how we are envisioning their future","markups":[]},{"name":"87a7","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*KDEdyxVXhd1fkGF4.png","originalWidth":1600,"originalHeight":900,"isFeatured":true}},{"name":"6d59","type":1,"text":"In today’s internet age in which companies reach audiences with incredible ease, the ability to move even faster gives an edge. Organizational structure is one of the many levers that can be used to attain the speed that we all crave, and so it plays a critical role in a…","markups":[]}],"sections":[{"name":"4213","startIndex":0}]},"isFullContent":false,"subtitle":"Postman engineering structure: why foundation teams exist and how we are envisioning their future"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"62ac3959de44":{"id":"62ac3959de44","versionId":"ef8102c1b3df","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"The most important API metric is time to first call","detectedLanguage":"en","latestVersion":"ef8102c1b3df","latestPublishedVersion":"ef8102c1b3df","hasUnpublishedEdits":false,"latestRev":81,"createdAt":1626726347444,"updatedAt":1641445839883,"acceptedAt":0,"firstPublishedAt":1626727421304,"latestPublishedAt":1626727421304,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Invest in TTFC to expand your potential developer base","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*k3ucbwWRlCQzg4T6DkACZw.jpeg","filter":"","backgroundSize":"","originalWidth":6144,"originalHeight":4069,"strategy":"resample","height":0,"width":0},"wordCount":947,"imageCount":3,"readingTime":4.123584905660377,"subtitle":"Invest in TTFC to expand your potential developer base","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":7,"isBookmarked":false,"tags":[{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"api-development","name":"Api Development","postCount":7736,"metadata":{"postCount":7736,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"developer-experience","name":"Developer Experience","postCount":1142,"metadata":{"postCount":1142,"coverImage":{"id":"1*_MRJtr_TNW5glq9b_AqaOg.png","originalWidth":744,"originalHeight":213,"isFeatured":true}},"type":"Tag"},{"slug":"documentation","name":"Documentation","postCount":7088,"metadata":{"postCount":7088,"coverImage":{"id":"0*7hM8dogh6AZWedF2","originalWidth":6000,"originalHeight":4000,"isFeatured":true,"unsplashPhotoId":"9_eMsFKGJiM"}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2493918,"metadata":{"postCount":2493918,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://unsplash.com/@goumbik?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://unsplash.com/s/photos/time?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/sending-requests/generate-code-snippets/","alts":[],"httpStatus":200},{"url":"https://www.algolia.com/doc/onboarding/#/pick-dataset","alts":[],"httpStatus":503},{"url":"https://techcrunch.com/2021/07/12/the-most-important-api-metric-is-time-to-first-call/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/stripedev/workspace/stripe-developers/documentation/665823-cb38bcd7-307b-41aa-9282-f4dd72d299a3","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/vonage-communications-apis-postman-collection/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/increasing-adoption-of-an-api-with-a-public-workspace/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/explore-symbl-ais-new-postman-public-workspace/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/twitter/workspace/twitter-s-public-workspace/overview","alts":[],"httpStatus":200},{"url":"https://stripe.com/docs/checkout/integration-builder","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1626727425304},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":14,"sectionCount":2,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"the-most-important-api-metric-is-time-to-first-call","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"the-most-important-api-metric-is-time-to-first-call-62ac3959de44","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*k3ucbwWRlCQzg4T6DkACZw.jpeg","originalWidth":6144,"originalHeight":4069,"isFeatured":true}},{"name":"0ec4","type":3,"text":"The most important API metric is time to first call","markups":[],"alignment":1},{"name":"70d3","type":13,"text":"Invest in TTFC to expand your potential developer…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Invest in TTFC to expand your potential developer base"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://techcrunch.com/2021/07/12/the-most-important-api-metric-is-time-to-first-call/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"decb52b64abf","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"0ec4","type":3,"text":"The most important API metric is time to first call","markups":[]},{"name":"70d3","type":13,"text":"Invest in TTFC to expand your potential developer base","markups":[]},{"name":"c332","type":1,"text":"API publishers among Postman’s community of more than 15 million are working toward more seamless and integrated developer experiences for their APIs. Distilled from hundreds of one-on-one discussions, I recently shared a study on increasing adoption of an API with a public workspace in Postman. One of the biggest reasons…","markups":[{"type":3,"start":220,"end":284,"href":"https://blog.postman.com/increasing-adoption-of-an-api-with-a-public-workspace/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"3f5a","startIndex":0}]},"isFullContent":false,"subtitle":"Invest in TTFC to expand your potential developer base"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"af904a74d32b":{"id":"af904a74d32b","versionId":"2c292c4b89f2","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"Negative testing for more resilient APIs","detectedLanguage":"en","latestVersion":"2c292c4b89f2","latestPublishedVersion":"2c292c4b89f2","hasUnpublishedEdits":false,"latestRev":273,"createdAt":1622056742745,"updatedAt":1641488861549,"acceptedAt":0,"firstPublishedAt":1622149834498,"latestPublishedAt":1622149834498,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Unhappy path test cases to ensure proper input validation and error handling","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*zrBVUnuGDVntEeip-SZxKA.jpeg","filter":"","backgroundSize":"","originalWidth":7951,"originalHeight":5187,"strategy":"resample","height":0,"width":0},"wordCount":1027,"imageCount":2,"readingTime":4.258805031446541,"subtitle":"Unhappy path test cases to ensure proper input validation and error handling","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":26,"isBookmarked":false,"tags":[{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"testing","name":"Testing","postCount":42899,"metadata":{"postCount":42899,"coverImage":{"id":"1*lMcdt2Y_t3lA0v_FqeSKog.jpeg","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":56656,"metadata":{"postCount":56656,"coverImage":{"id":"1*y38k5yLTPXWMtQoWyBuy5w.jpeg","originalWidth":1119,"originalHeight":1280}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2493918,"metadata":{"postCount":2493918,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://medium.com/better-practices/chaos-d3ef238ec328","alts":[{"type":3,"url":"medium://p/d3ef238ec328"},{"type":2,"url":"medium://p/d3ef238ec328"}],"httpStatus":200},{"url":"https://learning.postman.com/docs/running-collections/using-newman-cli/command-line-integration-with-newman/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/designing-and-developing-your-api/monitoring-your-api/monitoring-apis-websites/","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/acing-your-apis-what-you-need-to-know-for-test-automation-e3fdba3519b9","alts":[{"type":3,"url":"medium://p/e3fdba3519b9"},{"type":2,"url":"medium://p/e3fdba3519b9"}],"httpStatus":200},{"url":"https://god.gw.postman.com/run-collection/1559645-c2db0576-6f29-4338-908e-25892275fe03?action=collection%2Ffork&collection-url=entityId%3D1559645-c2db0576-6f29-4338-908e-25892275fe03%26entityType%3Dcollection%26workspaceId%3Db2d28b8c-70a9-4101-8a39-782ab83fed1b","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/running-collections/intro-to-collection-runs/","alts":[],"httpStatus":200},{"url":"https://youtu.be/E66R1nP7d-A","alts":[{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=E66R1nP7d-A&feature=youtu.be&feature=applinks"},{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=E66R1nP7d-A&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://unsplash.com/@intricateexplorer?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://youtu.be/c-5UMf6sWk4","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=c-5UMf6sWk4&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=c-5UMf6sWk4&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://www.postman.com/postman/workspace/unbreakable-api/documentation/1559645-c2db0576-6f29-4338-908e-25892275fe03","alts":[],"httpStatus":200},{"url":"https://www.postman.com/postman/workspace/test-examples-in-postman/overview","alts":[],"httpStatus":200},{"url":"https://unsplash.com/s/photos/rocky-road?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1622149835765},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":66,"sectionCount":2,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"negative-testing-for-more-resilient-apis","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"negative-testing-for-more-resilient-apis-af904a74d32b","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*zrBVUnuGDVntEeip-SZxKA.jpeg","originalWidth":7951,"originalHeight":5187,"isFeatured":true}},{"name":"ba35","type":3,"text":"Negative testing for more resilient APIs","markups":[],"alignment":1},{"name":"8081","type":13,"text":"Unhappy path test cases to ensure proper input validation and…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Unhappy path test cases to ensure proper input validation and error handling"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/negative-testing-for-more-resilient-apis/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"decb52b64abf","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"Unhappy path test cases to ensure proper input validation and error handling","previewContent2":{"bodyModel":{"paragraphs":[{"name":"ba35","type":3,"text":"Negative testing for more resilient APIs","markups":[]},{"name":"8081","type":13,"text":"Unhappy path test cases to ensure proper input validation and error handling","markups":[]},{"name":"c933","type":4,"text":"Photo by Intricate Explorer on Unsplash","markups":[{"type":3,"start":9,"end":27,"href":"https://unsplash.com/@intricateexplorer?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0},{"type":3,"start":31,"end":39,"href":"https://unsplash.com/s/photos/rocky-road?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0}],"layout":3,"metadata":{"id":"1*zrBVUnuGDVntEeip-SZxKA.jpeg","originalWidth":7951,"originalHeight":5187,"isFeatured":true}},{"name":"c6cc","type":1,"text":"I’ve previously shared how to build resilient APIs with chaos engineering and security hacking with the Big List of Naughty Strings. I’ve also broken some hearts, so I have some experience with breaking things. In this post, let’s go beyond basic test automation in Postman, and learn why intentionally trying…","markups":[{"type":3,"start":30,"end":73,"href":"https://medium.com/better-practices/chaos-d3ef238ec328","title":"","rel":"","anchorType":0},{"type":3,"start":78,"end":131,"href":"https://youtu.be/E66R1nP7d-A","title":"","rel":"","anchorType":0},{"type":3,"start":241,"end":262,"href":"https://medium.com/better-practices/acing-your-apis-what-you-need-to-know-for-test-automation-e3fdba3519b9","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"4942","startIndex":0}]},"isFullContent":false,"subtitle":"Unhappy path test cases to ensure proper input validation and error handling"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"cdc7da7759ca":{"id":"cdc7da7759ca","versionId":"5392c47821f3","creatorId":"b0dd739a6a15","homeCollectionId":"410f2fbc015d","title":"How to Use Postman Monitors to Schedule CircleCI Pipelines","detectedLanguage":"en","latestVersion":"5392c47821f3","latestPublishedVersion":"5392c47821f3","hasUnpublishedEdits":false,"latestRev":160,"createdAt":1621442747253,"updatedAt":1641494232497,"acceptedAt":0,"firstPublishedAt":1621357341000,"latestPublishedAt":1621444006374,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Problems and solutions when working with scheduled pipelines","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*sPgF7BtfG-Vc11TXnDvEMg.png","filter":"","backgroundSize":"","originalWidth":2560,"originalHeight":1440,"strategy":"resample","height":0,"width":0},"wordCount":952,"imageCount":10,"readingTime":4.842452830188679,"subtitle":"Problems and solutions when working with scheduled pipelines","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":3,"isBookmarked":false,"tags":[{"slug":"devops","name":"DevOps","postCount":102215,"metadata":{"postCount":102215,"coverImage":{"id":"1*BqVsCBa2mLv1UWQrdhjX5w.png","originalWidth":1500,"originalHeight":750,"isFeatured":true,"alt":"How I Am Using a Lifetime 100% Free Server"}},"type":"Tag"},{"slug":"pipeline","name":"Pipeline","postCount":4653,"metadata":{"postCount":4653,"coverImage":{"id":"0*Q6YN6Eag2F1U27Mp.png","originalWidth":1800,"originalHeight":908,"isFeatured":true}},"type":"Tag"},{"slug":"monitor","name":"Monitor","postCount":2380,"metadata":{"postCount":2380,"coverImage":{"id":"0*C3jVDih1kuojI-YN","originalWidth":5184,"originalHeight":3456,"unsplashPhotoId":"1yG-SH-mgYI"}},"type":"Tag"},{"slug":"postman","name":"Postman","postCount":3895,"metadata":{"postCount":3895,"coverImage":{"id":"1*q8mehtnD0r_dSOgGeg1pkQ.png","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"testing","name":"Testing","postCount":42899,"metadata":{"postCount":42899,"coverImage":{"id":"1*lMcdt2Y_t3lA0v_FqeSKog.jpeg","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://documenter.getpostman.com/view/631643/JsLs/?version=latest&_ga=2.155389496.2007823381.1594650607-1833144898.1594650607#5b277ca0-7114-e04e-f1f5-246fbbd6d973","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/designing-and-developing-your-api/monitoring-your-api/monitoring-apis-websites/","alts":[],"httpStatus":200},{"url":"https://circleci.com/docs/2.0/api-developers-guide/#getting-started-with-the-api","alts":[],"httpStatus":200},{"url":"https://www.postman.com/collection/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/how-to-use-postman-monitors-to-schedule-circleci-pipelines/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1621444006825},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":5,"sectionCount":2,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"how-to-use-postman-monitors-to-schedule-circleci-pipelines","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"https://blog.postman.com/how-to-use-postman-monitors-to-schedule-circleci-pipelines/","importedPublishedAt":1621357341000,"visibility":0,"uniqueSlug":"how-to-use-postman-monitors-to-schedule-circleci-pipelines-cdc7da7759ca","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*sPgF7BtfG-Vc11TXnDvEMg.png","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},{"name":"cbbd","type":3,"text":"How to Use Postman Monitors to Schedule CircleCI Pipelines","markups":[],"alignment":1},{"name":"1dd3","type":13,"text":"Problems and solutions when working with…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Problems and solutions when working with scheduled pipelines"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/how-to-use-postman-monitors-to-schedule-circleci-pipelines/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"decb52b64abf","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"cbbd","type":3,"text":"How to Use Postman Monitors to Schedule CircleCI Pipelines","markups":[]},{"name":"1dd3","type":13,"text":"Problems and solutions when working with scheduled pipelines","markups":[]},{"name":"bcce","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*sPgF7BtfG-Vc11TXnDvEMg.png","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},{"name":"fbec","type":1,"text":"In this blog post, we will learn how Postman can supercharge your experience with CircleCI pipelines, particularly with scheduled pipeline runs.","markups":[]},{"name":"ee85","type":1,"text":"Let’s go over the problems and solutions when working with scheduled CircleCI pipelines.","markups":[]},{"name":"fb50","type":3,"text":"Limitations associated with scheduled CircleCI pipelines","markups":[]},{"name":"e59d","type":1,"text":"Imagine you want to schedule your CircleCI pipeline to run at midnight for your nightly workflow…","markups":[{"type":10,"start":178,"end":188}]}],"sections":[{"name":"6d66","startIndex":0}]},"isFullContent":false,"subtitle":"Problems and solutions when working with scheduled pipelines"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"7f62d2276b62":{"id":"7f62d2276b62","versionId":"cad517c27aa1","creatorId":"3b9502d26b05","homeCollectionId":"410f2fbc015d","title":"Problem: Spreadsheets. Solution: Specifications","detectedLanguage":"en","latestVersion":"cad517c27aa1","latestPublishedVersion":"cad517c27aa1","hasUnpublishedEdits":false,"latestRev":263,"createdAt":1619182377178,"updatedAt":1641515967329,"acceptedAt":0,"firstPublishedAt":1619112322000,"latestPublishedAt":1619459870971,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"This is a story inspired by true events, about a team and the everyday struggles they faced while building an API defined by spreadsheets","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*NpSDTqC_LlpZ0pgT","filter":"","backgroundSize":"","originalWidth":5472,"originalHeight":3648,"strategy":"resample","height":0,"width":0},"wordCount":1152,"imageCount":4,"readingTime":5.047169811320755,"subtitle":"This is a story inspired by true events, about a team and the everyday struggles they faced while building an API defined by spreadsheets","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":3,"isBookmarked":false,"tags":[{"slug":"openapi-specification","name":"Openapi Specification","postCount":253,"metadata":{"postCount":253,"coverImage":{"id":"0*QWJC_IKFOp9CAkJh","originalWidth":704,"originalHeight":330}},"type":"Tag"},{"slug":"api-integration","name":"Api Integration","postCount":3664,"metadata":{"postCount":3664,"coverImage":{"id":"1*z-r3aOyl9iPwiaGy7NoqJg.png","originalWidth":3104,"originalHeight":1974,"isFeatured":true}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"developer-productivity","name":"Developer Productivity","postCount":1373,"metadata":{"postCount":1373,"coverImage":{"id":"1*32LkZ-TZ95vvhzJ89hckbg.jpeg","originalWidth":3200,"originalHeight":1724,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://unsplash.com?utm_source=medium&utm_medium=referral","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/designing-and-developing-your-api/the-api-workflow/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/designing-and-developing-your-api/the-api-workflow/#developing-an-api","alts":[],"httpStatus":200},{"url":"https://spec.openapis.org/oas/v3.1.0#schema-object","alts":[],"httpStatus":200},{"url":"https://apievangelist.com/2020/11/23/a-high-level-look-at-api-specifications/","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@thisisengineering?utm_source=medium&utm_medium=referral","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/openapi-specification-postman-how-to/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/problem-spreadsheets-solution-specifications/","alts":[],"httpStatus":200},{"url":"https://openapi.tools/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/postman/workspace/postman-public-workspace/api/f00b3236-8241-43ce-925f-80f6f73f8ffc?version=26b1363e-2b53-4ec3-85b2-21ae480c86fe&tab=overview","alts":[],"httpStatus":200},{"url":"https://www.postman.com/postman/workspace/postman-blog/api/20e74ed8-66d2-497d-ba01-db5360c0131d?version=9a08a555-2fdc-4a06-bc77-45e120f9960b&tab=define","alts":[],"httpStatus":200},{"url":"https://www.postman.com/dolbyio/workspace/dolby-io-public-workspace/api/1836eb91-6406-4783-a683-ed7d7685560b?version=475ae55d-7eb0-4609-b6cd-96c9ece9002b&tab=define","alts":[],"httpStatus":200},{"url":"https://www.postman.com/twilio/workspace/twilio-api/api/d4f6010f-a731-4741-bcff-fd88640a9036?version=03c17ae1-c0ed-4a51-8763-67a858cda324&tab=overview","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/author/kinlane/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1619459872185},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":5,"sectionCount":1,"readingList":0,"topics":[]},"coverless":true,"slug":"problem-spreadsheets-solution-specifications","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"https://blog.postman.com/problem-spreadsheets-solution-specifications/","importedPublishedAt":1619112322000,"visibility":0,"uniqueSlug":"problem-spreadsheets-solution-specifications-7f62d2276b62","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*NpSDTqC_LlpZ0pgT","originalWidth":5472,"originalHeight":3648,"isFeatured":true,"unsplashPhotoId":"M_NvKwSOkug"}},{"name":"d4e9","type":3,"text":"Problem: Spreadsheets. Solution: Specifications","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"This is a story inspired by true events, about a team and the everyday struggles they faced while building an API defined by spreadsheets"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/problem-spreadsheets-solution-specifications/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"Problem: Spreadsheets. Solution: Specifications","previewContent2":{"bodyModel":{"paragraphs":[{"name":"d4e9","type":3,"text":"Problem: Spreadsheets. Solution: Specifications","markups":[]},{"name":"4ea9","type":4,"text":"Photo by ThisisEngineering RAEng on Unsplash","markups":[{"type":3,"start":9,"end":32,"href":"https://unsplash.com/@thisisengineering?utm_source=medium&utm_medium=referral","title":"","rel":"photo-creator noopener","anchorType":0},{"type":3,"start":36,"end":44,"href":"https://unsplash.com?utm_source=medium&utm_medium=referral","title":"","rel":"photo-source noopener","anchorType":0}],"layout":1,"metadata":{"id":"0*NpSDTqC_LlpZ0pgT","originalWidth":5472,"originalHeight":3648,"isFeatured":true,"unsplashPhotoId":"M_NvKwSOkug"}},{"name":"b82b","type":1,"text":"This is a story inspired by true events, about a team and the everyday struggles they faced while building an API defined by spreadsheets and documents. What can come to the rescue? API specifications.","markups":[]},{"name":"7f96","type":3,"text":"In analysis","markups":[]}],"sections":[{"name":"9b28","startIndex":0}]},"isFullContent":false,"subtitle":"This is a story inspired by true events, about a team and the everyday struggles they faced while building an API defined by spreadsheets"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"d2269a025ae6":{"id":"d2269a025ae6","versionId":"8ddf895e16c2","creatorId":"da19aa755173","homeCollectionId":"410f2fbc015d","title":"How (and Why) Postman Created a Data-Driven Hiring Process","detectedLanguage":"en","latestVersion":"8ddf895e16c2","latestPublishedVersion":"8ddf895e16c2","hasUnpublishedEdits":false,"latestRev":275,"createdAt":1614395581517,"updatedAt":1640861226315,"acceptedAt":0,"firstPublishedAt":1613076597000,"latestPublishedAt":1614613780670,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"An effective hiring process is one of the most crucial parts of scaling an organization. Especially when a company scales at least 10…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*Mx49VRO74rbSp8Kb.png","filter":"","backgroundSize":"","originalWidth":1106,"originalHeight":530,"strategy":"resample","height":0,"width":0},"wordCount":2239,"imageCount":4,"readingTime":9.149056603773584,"subtitle":"An effective hiring process is one of the most crucial parts of scaling an organization. Especially when a company scales at least 10…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":9,"isBookmarked":false,"tags":[{"slug":"technology","name":"Technology","postCount":2493918,"metadata":{"postCount":2493918,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"startup","name":"Startup","postCount":645820,"metadata":{"postCount":645820,"coverImage":{"id":"1*22RsJ-7NHWOqbpqOFCv8Vw.jpeg"}},"type":"Tag"},{"slug":"hiring","name":"Hiring","postCount":39891,"metadata":{"postCount":39891,"coverImage":{"id":"1*Kp0Q71aS4RmnfdtUH2qYbQ.png","originalWidth":640,"originalHeight":640}},"type":"Tag"},{"slug":"data","name":"Data","postCount":130759,"metadata":{"postCount":130759,"coverImage":{"id":"1*qBcx_pKqqUDnNfPo8uuSvg.jpeg","originalWidth":1280,"originalHeight":853}},"type":"Tag"},{"slug":"organizational-culture","name":"Organizational Culture","postCount":14266,"metadata":{"postCount":14266,"coverImage":{"id":"1*t9ilCKs1LO-nFVXXVYkZiA.png","originalWidth":2048,"originalHeight":1536,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://www.postman.com/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/company/careers/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/careers/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/about-postman/","alts":[],"httpStatus":200},{"url":"https://designsprintkit.withgoogle.com/methodology/phase2-define/success-metrics-signals","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/how-postman-does-data-democratization/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/how-to-identify-actionable-metrics-vs-vanity-metrics/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1614613872940},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":142,"sectionCount":1,"readingList":0,"topics":[]},"coverless":true,"slug":"how-and-why-postman-created-a-data-driven-hiring-process","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"https://blog.postman.com/how-postman-created-data-hiring-process/","importedPublishedAt":1613076597000,"visibility":0,"uniqueSlug":"how-and-why-postman-created-a-data-driven-hiring-process-d2269a025ae6","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*Mx49VRO74rbSp8Kb.png","originalWidth":1106,"originalHeight":530,"isFeatured":true}},{"name":"e1b4","type":3,"text":"How (and Why) Postman Created a Data-Driven Hiring Process","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"An effective hiring process is one of the most crucial parts of scaling an organization. Especially when a company scales at least 10…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/how-postman-created-data-hiring-process/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"e1b4","type":3,"text":"How (and Why) Postman Created a Data-Driven Hiring Process","markups":[]},{"name":"a9b8","type":1,"text":"An effective hiring process is one of the most crucial parts of scaling an organization. Especially when a company scales at least 10 times its size, it needs to figure out how to evolve various processes and practices while still staying true to its values. Postman has always been committed…","markups":[{"type":3,"start":259,"end":266,"href":"https://www.postman.com/","title":"","rel":"","anchorType":0},{"type":3,"start":296,"end":329,"href":"https://www.postman.com/company/careers/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"667e","startIndex":0}]},"isFullContent":false,"subtitle":"An effective hiring process is one of the most crucial parts of scaling an organization. Especially when a company scales at least 10…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"15c8807f6393":{"id":"15c8807f6393","versionId":"af9bba571ae0","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"How Postman Engineering handles a million concurrent connections","detectedLanguage":"en","latestVersion":"af9bba571ae0","latestPublishedVersion":"af9bba571ae0","hasUnpublishedEdits":false,"latestRev":282,"createdAt":1608752789907,"updatedAt":1640382369008,"acceptedAt":0,"firstPublishedAt":1608662531000,"latestPublishedAt":1608761742389,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"The Server Foundation team at Postman shares the origin story of the Bifrost websocket gateway","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*YzAN-PbW3j9aDNOWCV0KJA.jpeg","filter":"","backgroundSize":"","originalWidth":4288,"originalHeight":2848,"strategy":"resample","height":0,"width":0},"wordCount":2273,"imageCount":8,"readingTime":9.71069182389937,"subtitle":"The Server Foundation team at Postman shares the origin story of the Bifrost websocket gateway","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":181,"isBookmarked":false,"tags":[{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":56656,"metadata":{"postCount":56656,"coverImage":{"id":"1*y38k5yLTPXWMtQoWyBuy5w.jpeg","originalWidth":1119,"originalHeight":1280}},"type":"Tag"},{"slug":"websocket","name":"Websocket","postCount":3241,"metadata":{"postCount":3241,"coverImage":{"id":"1*UwViNRFdaFH2osbcBeOhPw.png","originalWidth":800,"originalHeight":400,"isFeatured":true,"alt":"WebSocket with PHP"}},"type":"Tag"},{"slug":"microservices","name":"Microservices","postCount":26345,"metadata":{"postCount":26345,"coverImage":{"id":"1*6gkTSGWlZUynU3_bYpufNA.png","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2493918,"metadata":{"postCount":2493918,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://unsplash.com/s/photos/rainbow-bridge-calgary?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://sailsjs.com/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/collaborating-in-postman/version-control-for-collections/","alts":[],"httpStatus":200},{"url":"https://www.fastify.io/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/numaanashraf/","alts":[],"httpStatus":999},{"url":"https://learning.postman.com/docs/collaborating-in-postman/roles-and-permissions/#roles-in-postman","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/kunagpal/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/mudit-mehta-6920a2113/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/yashishdua/","alts":[],"httpStatus":999},{"url":"https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Domain-driven_design","alts":[],"httpStatus":200},{"url":"https://www.postman.com/automated-testing/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/postman-engineering-million-concurrent-connections/","alts":[],"httpStatus":200},{"url":"https://github.com/socketio/socket.io-adapter","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/how-postman-engineering-does-microservices-aa026a3d682d","alts":[{"type":3,"url":"medium://p/aa026a3d682d"},{"type":2,"url":"medium://p/aa026a3d682d"}],"httpStatus":200},{"url":"https://unsplash.com/@trfotos?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1608761743523},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":708,"sectionCount":2,"readingList":0,"topics":[{"topicId":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"how-postman-engineering-handles-a-million-concurrent-connections","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"https://blog.postman.com/postman-engineering-million-concurrent-connections/","importedPublishedAt":1608662531000,"visibility":0,"uniqueSlug":"how-postman-engineering-handles-a-million-concurrent-connections-15c8807f6393","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*YzAN-PbW3j9aDNOWCV0KJA.jpeg","originalWidth":4288,"originalHeight":2848,"isFeatured":true}},{"name":"5ea0","type":3,"text":"How Postman Engineering handles a million concurrent connections","markups":[],"alignment":1},{"name":"2f02","type":13,"text":"The Server Foundation team at…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"The Server Foundation team at Postman shares the origin story of the Bifrost websocket gateway"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/postman-engineering-million-concurrent-connections/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"55f1c20aba7a","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"5ea0","type":3,"text":"How Postman Engineering handles a million concurrent connections","markups":[]},{"name":"2f02","type":13,"text":"The Server Foundation team at Postman shares the origin story of the Bifrost websocket gateway","markups":[]},{"name":"d784","type":1,"text":"In the Marvel Cinematic Universe, Bifrost is the name of the rainbow bridge that allows instantaneous travel between the realms of gods and humanity. Similarly, and equally magically, our Bifrost websocket gateway lets Postman clients instantaneously connect to Postman services.","markups":[]},{"name":"6cf5","type":4,"text":"Photo by Toni Reed on Unsplash","markups":[{"type":3,"start":9,"end":18,"href":"https://unsplash.com/@trfotos?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0},{"type":3,"start":22,"end":30,"href":"https://unsplash.com/s/photos/rainbow-bridge-calgary?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0}],"layout":1,"metadata":{"id":"1*YzAN-PbW3j9aDNOWCV0KJA.jpeg","originalWidth":4288,"originalHeight":2848,"isFeatured":true}},{"name":"c92c","type":1,"text":"As I’ve previously shared in How Postman Engineering Does Microservices…","markups":[{"type":3,"start":29,"end":71,"href":"https://medium.com/better-practices/how-postman-engineering-does-microservices-aa026a3d682d","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"6c0c","startIndex":0}]},"isFullContent":false,"subtitle":"The Server Foundation team at Postman shares the origin story of the Bifrost websocket gateway"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"b6f302a67426":{"id":"b6f302a67426","versionId":"ed9e92eb7939","creatorId":"3b9502d26b05","homeCollectionId":"410f2fbc015d","title":"Kubernetes Tutorial: Your Complete Guide to Deploying an App on AWS with Postman","detectedLanguage":"en","latestVersion":"ed9e92eb7939","latestPublishedVersion":"ed9e92eb7939","hasUnpublishedEdits":false,"latestRev":646,"createdAt":1608227403257,"updatedAt":1640350898176,"acceptedAt":0,"firstPublishedAt":1608322040461,"latestPublishedAt":1608322137458,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Use Postman to learn Kubernetes and deploy an app on an AWS cluster","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*s4XwU_oTqRSiJBmS.png","filter":"","backgroundSize":"","originalWidth":1468,"originalHeight":1016,"strategy":"resample","height":0,"width":0},"wordCount":2712,"imageCount":24,"readingTime":12.183962264150942,"subtitle":"Use Postman to learn Kubernetes and deploy an app on an AWS cluster","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":34,"isBookmarked":false,"tags":[{"slug":"kubernetes","name":"Kubernetes","postCount":60428,"metadata":{"postCount":60428,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"postman-collections","name":"Postman Collections","postCount":216,"metadata":{"postCount":216,"coverImage":{"id":"1*_yqACAxoNSbX2-iahZm2-Q.png","originalWidth":973,"originalHeight":623,"isFeatured":true}},"type":"Tag"},{"slug":"aws","name":"AWS","postCount":117989,"metadata":{"postCount":117989,"coverImage":{"id":"1*VVqhjb2UtWxay69ma_D6Ng.jpeg","originalWidth":1024,"originalHeight":1024}},"type":"Tag"},{"slug":"tutorial","name":"Tutorial","postCount":118838,"metadata":{"postCount":118838,"coverImage":{"id":"1*tWFqI3TzSbRXMR4Wz_QRvw.jpeg","originalWidth":1928,"originalHeight":992,"isFeatured":true}},"type":"Tag"},{"slug":"devops","name":"DevOps","postCount":102215,"metadata":{"postCount":102215,"coverImage":{"id":"1*BqVsCBa2mLv1UWQrdhjX5w.png","originalWidth":1500,"originalHeight":750,"isFeatured":true,"alt":"How I Am Using a Lifetime 100% Free Server"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://blog.postman.com/looping-through-a-data-file-in-the-postman-collection-runner/#:~:text=Postman%27s%20Collection%20Runner%20lets%20you,Test%20for%20hundreds%20of%20scenarios","alts":[],"httpStatus":200},{"url":"https://stedolan.github.io/jq/download/","alts":[],"httpStatus":200},{"url":"https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html","alts":[],"httpStatus":200},{"url":"https://cloud.google.com/containers","alts":[],"httpStatus":200},{"url":"https://github.com/meenakshi-dhanani/k8s-postman-tutorial/blob/main/cluster.yaml","alts":[],"httpStatus":200},{"url":"https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html","alts":[],"httpStatus":200},{"url":"https://eksctl.io/introduction/#installation","alts":[],"httpStatus":200},{"url":"https://github.com/thecasualcoder/dobby","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/postman-app-support/issues","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/running-collections/building-workflows/","alts":[],"httpStatus":200},{"url":"https://documenter.getpostman.com/view/13059338/TVmLCyNi","alts":[],"httpStatus":200},{"url":"https://kubernetes.io/docs/tasks/tools/install-kubectl/","alts":[],"httpStatus":200},{"url":"https://community.postman.com/","alts":[],"httpStatus":200},{"url":"https://github.com/meenakshi-dhanani/k8s-postman-tutorial","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/collaborating-in-postman/version-control-for-collections/#creating-pull-requests","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/running-collections/using-newman-cli/command-line-integration-with-newman/","alts":[],"httpStatus":200},{"url":"https://hub.docker.com/r/thecasualcoder/dobby","alts":[],"httpStatus":200},{"url":"https://www.docker.com/products/container-runtime","alts":[],"httpStatus":200},{"url":"https://portal.aws.amazon.com/billing/signup?refid=em_127222&redirect_url=https%3A%2F%2Faws.amazon.com%2Fregistration-confirmation#/start","alts":[],"httpStatus":200},{"url":"https://www.postman.com/collection/","alts":[],"httpStatus":200},{"url":"https://kubernetes.io/","alts":[],"httpStatus":200},{"url":"https://github.com/meenakshi-dhanani/k8s-postman-tutorial/blob/main/role.yaml","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/rest-api-definition/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/collaborating-in-postman/version-control-for-collections/#forking-a-collection","alts":[],"httpStatus":200},{"url":"https://aws.amazon.com/eks/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc&eks-blogs.sort-by=item.additionalFields.createdDate&eks-blogs.sort-order=desc","alts":[],"httpStatus":200},{"url":"https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1608322137760},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":178,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"kubernetes-tutorial-your-complete-guide-to-deploying-an-app-on-aws-with-postman","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"kubernetes-tutorial-b6f302a67426","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*s4XwU_oTqRSiJBmS.png","originalWidth":1468,"originalHeight":1016,"isFeatured":true}},{"name":"3a2d","type":3,"text":"Kubernetes Tutorial: Your Complete Guide to Deploying an App on AWS with Postman","markups":[],"alignment":1},{"name":"3750","type":13,"text":"Use Postman to learn…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Use Postman to learn Kubernetes and deploy an app on an AWS cluster"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/kubernetes-tutorial/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"decb52b64abf","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"Kubernetes Tutorial: Guide to Deploying an App on AWS with Postman","previewContent2":{"bodyModel":{"paragraphs":[{"name":"3a2d","type":3,"text":"Kubernetes Tutorial: Your Complete Guide to Deploying an App on AWS with Postman","markups":[]},{"name":"3750","type":13,"text":"Use Postman to learn Kubernetes and deploy an app on an AWS cluster","markups":[]},{"name":"0d51","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*I5qHb-UGExNIu1O1.png","originalWidth":1418,"originalHeight":358}},{"name":"65b3","type":1,"text":"Kubernetes is an open source system that is useful for container orchestration. In this tutorial, we are going to use Postman Collections to learn Kubernetes and use its API to deploy an app on a Kubernetes cluster hosted on AWS.","markups":[{"type":3,"start":0,"end":10,"href":"https://kubernetes.io/","title":"","rel":"external noopener","anchorType":0},{"type":3,"start":118,"end":137,"href":"https://www.postman.com/collection/","title":"","rel":"external noopener","anchorType":0},{"type":3,"start":225,"end":228,"href":"https://aws.amazon.com/eks/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc&eks-blogs.sort-by=item.additionalFields.createdDate&eks-blogs.sort-order=desc","title":"","rel":"external noopener","anchorType":0}]},{"name":"5a52","type":1,"text":"This is a hands-on tutorial. Don’t fret if you…","markups":[]}],"sections":[{"name":"11b8","startIndex":0}]},"isFullContent":false,"subtitle":"Use Postman to learn Kubernetes and deploy an app on an AWS cluster"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"1ef992192f15":{"id":"1ef992192f15","versionId":"a882772d4d96","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"The Good Documentation Checklist","detectedLanguage":"en","latestVersion":"a882772d4d96","latestPublishedVersion":"a882772d4d96","hasUnpublishedEdits":false,"latestRev":389,"createdAt":1604356179701,"updatedAt":1639653936680,"acceptedAt":0,"firstPublishedAt":1604360988373,"latestPublishedAt":1604360988373,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"See how you measure up to these nine better practices for Postman documentation","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*A_0pbiqSRM3cewi6FXanQw.jpeg","filter":"","backgroundSize":"","originalWidth":5616,"originalHeight":3744,"strategy":"resample","height":0,"width":0},"wordCount":1873,"imageCount":5,"readingTime":7.90125786163522,"subtitle":"See how you measure up to these nine better practices for Postman documentation","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":11,"isBookmarked":false,"tags":[{"slug":"documentation","name":"Documentation","postCount":7088,"metadata":{"postCount":7088,"coverImage":{"id":"0*7hM8dogh6AZWedF2","originalWidth":6000,"originalHeight":4000,"isFeatured":true,"unsplashPhotoId":"9_eMsFKGJiM"}},"type":"Tag"},{"slug":"developer-experience","name":"Developer Experience","postCount":1142,"metadata":{"postCount":1142,"coverImage":{"id":"1*_MRJtr_TNW5glq9b_AqaOg.png","originalWidth":744,"originalHeight":213,"isFeatured":true}},"type":"Tag"},{"slug":"development","name":"Development","postCount":113302,"metadata":{"postCount":113302,"coverImage":{"id":"1*sfKiyScj_l_fk0UzR1vMpw.png","originalWidth":5040,"originalHeight":2835,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2493918,"metadata":{"postCount":2493918,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"programming","name":"Programming","postCount":450288,"metadata":{"postCount":450288,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://learning.postman.com/docs/publishing-your-api/add-api-network/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/getting-started/importing-and-exporting-data/#importing-api-specifications","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/sending-requests/intro-to-collections/#managing-collections","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/sending-requests/authorization/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/collaborating-in-postman/collaboration-intro/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/writing-scripts/intro-to-scripts/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/sending-requests/visualizer/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/publishing-your-api/documenting-your-api/#creating-documentation-for-a-new-collection","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/publishing-your-api/add-api-network/#setting-up-your-team-profile","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/sending-requests/variables/#variable-scopes","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/publishing-your-api/documenting-your-api/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/publishing-your-api/documenting-your-api/#documenting-an-existing-collection","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/collaborating-in-postman/version-control-for-collections/#forking-a-collection","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/the-good-collection/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/how-to-use-api-keys/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/publishing-your-api/add-templates/#setting-up-your-profile","alts":[],"httpStatus":200},{"url":"https://www.postman.com/api-network/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/collections/using_markdown_for_descriptions/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/how-to-make-money-using-postman-chaining-requests/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/openapi-specification-postman-how-to/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/publishing-your-api/authoring-your-documentation/#using-examples-in-your-docs","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/publishing-your-api/authoring-your-documentation/#documenting-with-descriptions","alts":[],"httpStatus":200},{"url":"https://explore.postman.com/","alts":[],"httpStatus":200},{"url":"https://explore.postman.com/TwitterAdsAPI","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/graph/use-postman","alts":[],"httpStatus":200},{"url":"https://explore.postman.com/43fWSHmB4AFWXr","alts":[],"httpStatus":200},{"url":"https://explore.postman.com/356847","alts":[],"httpStatus":200},{"url":"https://explore.postman.com/263615","alts":[],"httpStatus":200},{"url":"https://documenter.getpostman.com/view/2220438/SzYevv9u?version=latest","alts":[],"httpStatus":200},{"url":"https://documenter.getpostman.com/view/12072907/T1DjjKE7","alts":[],"httpStatus":200},{"url":"https://documenter.getpostman.com/view/9956214/T1LMiT5U","alts":[],"httpStatus":200},{"url":"https://documenter.getpostman.com/view/1848580/T17Q6jdj","alts":[],"httpStatus":200},{"url":"https://documenter.getpostman.com/view/1559645/TVYGbHs1","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/the-ultimate-api-publishers-guide-be74a2692326","alts":[{"type":3,"url":"medium://p/be74a2692326"},{"type":2,"url":"medium://p/be74a2692326"}],"httpStatus":200}],"version":"0.3","generatedAt":1604360989727},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":31,"sectionCount":2,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"the-good-documentation-checklist","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"the-good-documentation-checklist-1ef992192f15","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*A_0pbiqSRM3cewi6FXanQw.jpeg","originalWidth":5616,"originalHeight":3744,"isFeatured":true}},{"name":"69bd","type":3,"text":"The Good Documentation Checklist","markups":[],"alignment":1},{"name":"a95c","type":13,"text":"See how you measure up to these nine better practices for Postman…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"See how you measure up to these nine better practices for Postman documentation"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/postman-good-documentation-checklist/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"decb52b64abf","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"69bd","type":3,"text":"The Good Documentation Checklist","markups":[]},{"name":"a95c","type":13,"text":"See how you measure up to these nine better practices for Postman documentation","markups":[]},{"name":"5e50","type":1,"text":"I’ve previously talked about the traits of a good collection. While not all collections grow up to be documentation, collections are the foundational building blocks for all Postman documentation viewable on the web. Here, I’m going to talk about the traits of good documentation.","markups":[{"type":3,"start":29,"end":60,"href":"https://blog.postman.com/the-good-collection/","title":"","rel":"noopener noreferrer","anchorType":0},{"type":3,"start":174,"end":195,"href":"https://learning.postman.com/docs/publishing-your-api/documenting-your-api/","title":"","rel":"noopener noreferrer","anchorType":0}]},{"name":"04ca","type":1,"text":"Postman documentation has become widely adopted…","markups":[{"type":3,"start":218,"end":227,"href":"https://docs.microsoft.com/en-us/graph/use-postman","title":"","rel":"noopener noreferrer","anchorType":0},{"type":3,"start":229,"end":236,"href":"https://documenter.getpostman.com/view/9956214/T1LMiT5U","title":"","rel":"noopener noreferrer","anchorType":0},{"type":3,"start":242,"end":249,"href":"https://documenter.getpostman.com/view/12072907/T1DjjKE7","title":"","rel":"noopener noreferrer","anchorType":0}]}],"sections":[{"name":"7983","startIndex":0}]},"isFullContent":false,"subtitle":"See how you measure up to these nine better practices for Postman documentation"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"662707e0ef9e":{"id":"662707e0ef9e","versionId":"801422cac3a5","creatorId":"da19aa755173","homeCollectionId":"410f2fbc015d","title":"The Postman Data Team’s Hub-and-Spoke Model","detectedLanguage":"en","latestVersion":"801422cac3a5","latestPublishedVersion":"801422cac3a5","hasUnpublishedEdits":false,"latestRev":87,"createdAt":1597891556633,"updatedAt":1639595973901,"acceptedAt":0,"firstPublishedAt":1598917739369,"latestPublishedAt":1598917739369,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"The structure of a team is crucial to its success. Structure helps us determine the various communication patterns that enable a team to…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*SMEz72BIytH9K7cCLE1Qtw.jpeg","filter":"","backgroundSize":"","originalWidth":6000,"originalHeight":4000,"strategy":"resample","height":0,"width":0},"wordCount":1010,"imageCount":4,"readingTime":4.511320754716981,"subtitle":"The structure of a team is crucial to its success. Structure helps us determine the various communication patterns that enable a team to…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":17,"isBookmarked":false,"tags":[{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"data","name":"Data","postCount":130759,"metadata":{"postCount":130759,"coverImage":{"id":"1*qBcx_pKqqUDnNfPo8uuSvg.jpeg","originalWidth":1280,"originalHeight":853}},"type":"Tag"},{"slug":"organizational-design","name":"Organizational Design","postCount":770,"metadata":{"postCount":770,"coverImage":{"id":"0*abSbhvk8faPoGbVL","originalWidth":1500,"originalHeight":1000,"isFeatured":true,"alt":"Photo by Jason Goodman on Unsplash"}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2493918,"metadata":{"postCount":2493918,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"software-engineering","name":"Software Engineering","postCount":116547,"metadata":{"postCount":116547,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://blog.postman.com/how-postman-does-data-democratization/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Problem_statement","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Spoke%E2%80%93hub_distribution_paradigm","alts":[],"httpStatus":200},{"url":"https://www.amazon.in/Scale-Universal-Innovation-Sustainability-Organisms/dp/1594205582","alts":[],"httpStatus":503},{"url":"https://www.whatmatters.com/faqs/okr-meaning-definition-example/#:~:text=The%20definition%20of%20%E2%80%9COKRs%E2%80%9D%20is,encourage%20engagement%20around%20measurable%20goals.","alts":[{"type":1,"url":"https://cdn.ampproject.org/c/s/www.whatmatters.com/amp/faqs/okr-meaning-definition-example/"}],"httpStatus":200}],"version":"0.3","generatedAt":1598917740096},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":69,"sectionCount":1,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"the-postman-data-teams-hub-and-spoke-model","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"the-postman-data-teams-hub-and-spoke-model-662707e0ef9e","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*SMEz72BIytH9K7cCLE1Qtw.jpeg","originalWidth":6000,"originalHeight":4000,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"The Postman Data Team’s Hub-and-Spoke Model","alignment":1},{"name":"previewSubtitle","type":13,"text":"The structure of a team is crucial to its success…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"The structure of a team is crucial to its success. Structure helps us determine the various communication patterns that enable a team to…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/how-postman-data-team-uses-hub-and-spoke-model/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1597891729930,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"dc11","type":3,"text":"The Postman Data Team’s Hub-and-Spoke Model","markups":[]},{"name":"566d","type":13,"text":"Designing a team structure for scalability, efficiency, innovation, and communication","markups":[]},{"name":"c294","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*SMEz72BIytH9K7cCLE1Qtw.jpeg","originalWidth":6000,"originalHeight":4000,"isFeatured":true}},{"name":"2495","type":1,"text":"The structure of a team is crucial to its success. Structure helps us determine the various communication patterns that enable a team to contribute to the organization’s overall growth. In this blog post, we’re going to talk about the structure of Postman’s data team, which includes our data engineers and…","markups":[]}],"sections":[{"name":"9e9c","startIndex":0}]},"isFullContent":false,"subtitle":"The structure of a team is crucial to its success. Structure helps us determine the various communication patterns that enable a team to…"},"cardType":0,"isDistributionAlertDismissed":true,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"6aec096dc9bf":{"id":"6aec096dc9bf","versionId":"3837eb14f97f","creatorId":"da19aa755173","homeCollectionId":"410f2fbc015d","title":"How Postman Does Data Democratization","detectedLanguage":"en","latestVersion":"3837eb14f97f","latestPublishedVersion":"3837eb14f97f","hasUnpublishedEdits":false,"latestRev":437,"createdAt":1597744064501,"updatedAt":1639582963995,"acceptedAt":0,"firstPublishedAt":1597868076355,"latestPublishedAt":1597868076355,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"A story from the Postman Data team about decentralization, breaking down silos, and sublinear scaling","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*RVPRxqz2VUuY7NGXSXzmtw.jpeg","filter":"","backgroundSize":"","originalWidth":2426,"originalHeight":1728,"strategy":"resample","height":0,"width":0},"wordCount":2538,"imageCount":8,"readingTime":10.71069182389937,"subtitle":"A story from the Postman Data team about decentralization, breaking down silos, and sublinear scaling","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":14,"isBookmarked":false,"tags":[{"slug":"data","name":"Data","postCount":130759,"metadata":{"postCount":130759,"coverImage":{"id":"1*qBcx_pKqqUDnNfPo8uuSvg.jpeg","originalWidth":1280,"originalHeight":853}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":56656,"metadata":{"postCount":56656,"coverImage":{"id":"1*y38k5yLTPXWMtQoWyBuy5w.jpeg","originalWidth":1119,"originalHeight":1280}},"type":"Tag"},{"slug":"data-science","name":"Data Science","postCount":348883,"metadata":{"postCount":348883,"coverImage":{"id":"1*Uwt3qmlNh9sopia3OmD4KA.jpeg","originalWidth":1280,"originalHeight":1280}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Conway%27s_law","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Application_programming_interface","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/OKR","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Information_silo","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Single-responsibility_principle","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Domain-driven_design","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/KISS_principle","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Maslow%27s_hierarchy_of_needs","alts":[],"httpStatus":200},{"url":"https://www.getdbt.com/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/","alts":[],"httpStatus":200},{"url":"https://www.postman.com/careers/","alts":[],"httpStatus":200},{"url":"https://www.researchgate.net/figure/Global-growth-trend-of-data-volume-2006-2020-based-on-The-digital-universe-in-2020_fig1_274233315","alts":[],"httpStatus":429},{"url":"https://hackernoon.com/the-ai-hierarchy-of-needs-18f111fcc007","alts":[],"httpStatus":200},{"url":"https://looker.com/","alts":[],"httpStatus":200},{"url":"https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/","alts":[],"httpStatus":200},{"url":"https://www.kaushik.net/avinash/lean-analytics-cycle-metrics-hypothesis-experiment-act/#:~:text=The%20Lean%20Analytics%20Cycle%20is,and%20decide%20what%20to%20do.","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1597868077763},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":36,"sectionCount":1,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"how-postman-does-data-democratization","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"how-postman-does-data-democratization-6aec096dc9bf","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*RVPRxqz2VUuY7NGXSXzmtw.jpeg","originalWidth":2426,"originalHeight":1728,"isFeatured":true}},{"name":"da77","type":3,"text":"How Postman Does Data Democratization","markups":[],"alignment":1},{"name":"f8b3","type":13,"text":"A story from the Postman Data team about decentralization…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"A story from the Postman Data team about decentralization, breaking down silos, and sublinear scaling"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/how-postman-does-data-democratization/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1597812501611,"primaryTopicId":"ae5d4995e225","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"da77","type":3,"text":"How Postman Does Data Democratization","markups":[]},{"name":"f8b3","type":13,"text":"A story from the Postman Data team about decentralization, breaking down silos, and sublinear scaling","markups":[]},{"name":"be9c","type":1,"text":"The world has more data than we know what to do with. As of 2020, the globally generated data volume has reached 40 zettabytes (i.e., 40 billion terabytes). Add to that massive volume the fact that data has also, in recent years, come to be seen as an immensely valuable…","markups":[{"type":3,"start":113,"end":126,"href":"https://www.researchgate.net/figure/Global-growth-trend-of-data-volume-2006-2020-based-on-The-digital-universe-in-2020_fig1_274233315","title":"","rel":"noopener noreferrer","anchorType":0}]}],"sections":[{"name":"35da","startIndex":0}]},"isFullContent":false,"subtitle":"A story from the Postman Data team about decentralization, breaking down silos, and sublinear scaling"},"cardType":0,"isDistributionAlertDismissed":true,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"aa026a3d682d":{"id":"aa026a3d682d","versionId":"f33f8c08e921","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"How Postman Engineering does microservices","detectedLanguage":"en","latestVersion":"f33f8c08e921","latestPublishedVersion":"f33f8c08e921","hasUnpublishedEdits":false,"latestRev":974,"createdAt":1592426547112,"updatedAt":1639554917285,"acceptedAt":0,"firstPublishedAt":1595285469320,"latestPublishedAt":1596321362118,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"A microservices update about domain-driven squads, CDC testing, and happily ever after","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*7j-JcmBvamEYqONLIzUQKg.jpeg","filter":"","backgroundSize":"","originalWidth":4928,"originalHeight":3264,"strategy":"resample","height":0,"width":0},"wordCount":1284,"imageCount":13,"readingTime":6.245283018867925,"subtitle":"A microservices update about domain-driven squads, CDC testing, and happily ever after","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":170,"isBookmarked":false,"tags":[{"slug":"microservices","name":"Microservices","postCount":26345,"metadata":{"postCount":26345,"coverImage":{"id":"1*6gkTSGWlZUynU3_bYpufNA.png","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":56656,"metadata":{"postCount":56656,"coverImage":{"id":"1*y38k5yLTPXWMtQoWyBuy5w.jpeg","originalWidth":1119,"originalHeight":1280}},"type":"Tag"},{"slug":"tech","name":"Tech","postCount":292984,"metadata":{"postCount":292984,"coverImage":{"id":"0*Zs_B6zDXGdgkK2jv","originalWidth":5120,"originalHeight":2880,"isFeatured":true,"unsplashPhotoId":"_nWaeTF6qo0"}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Conway%27s_law#:~:text=From%20Wikipedia,%20the%20free%20encyclopedia,introduced%20the%20idea%20in%201967.","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Monorepo","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Domain-driven_design","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/mock-servers/intro-to-mock-servers/","alts":[],"httpStatus":200},{"url":"https://blog.postman.com/postmans-series-c-funding-and-the-future-of-apis","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/collections/intro-to-collections/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/collections/commenting-on-collections/","alts":[],"httpStatus":200},{"url":"https://www.thoughtworks.com/radar/techniques/inverse-conway-maneuver","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/collections/examples/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/monitors/intro-monitors/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/workspaces/intro-to-workspaces/","alts":[],"httpStatus":200},{"url":"https://dzone.com/articles/navigating-the-microservice-deathstar-with-deployh","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/newman","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/conquering-the-microservices-dependency-hell-at-postman-with-postman-part-1-introduction-a1ae019bb934","alts":[{"type":2,"url":"medium://p/a1ae019bb934"},{"type":3,"url":"medium://p/a1ae019bb934"}],"httpStatus":200},{"url":"https://medium.com/better-practices/consumer-driven-contract-testing-using-postman-f3580dba5370","alts":[{"type":3,"url":"medium://p/f3580dba5370"},{"type":2,"url":"medium://p/f3580dba5370"}],"httpStatus":200},{"url":"https://medium.com/better-practices/api-first-software-development-for-modern-organizations-fdbfba9a66d3","alts":[{"type":3,"url":"medium://p/fdbfba9a66d3"},{"type":2,"url":"medium://p/fdbfba9a66d3"}],"httpStatus":200},{"url":"https://medium.com/postman-engineering/continuous-deployment-with-postman-collections-e2fb0b5d2235","alts":[{"type":3,"url":"medium://p/e2fb0b5d2235"},{"type":2,"url":"medium://p/e2fb0b5d2235"}],"httpStatus":200},{"url":"https://api.getpostman.com/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1596321363203},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":552,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"how-postman-engineering-does-microservices","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"how-postman-engineering-does-microservices-aa026a3d682d","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*7j-JcmBvamEYqONLIzUQKg.jpeg","originalWidth":4928,"originalHeight":3264,"isFeatured":true}},{"name":"b815","type":3,"text":"How Postman Engineering does microservices","markups":[],"alignment":1},{"name":"9d58","type":13,"text":"A microservices update about domain-driven squads, CDC…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"A microservices update about domain-driven squads, CDC testing, and happily ever after"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/postman-engineering-microservices-example/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"decb52b64abf","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"b815","type":3,"text":"How Postman Engineering does microservices","markups":[]},{"name":"9d58","type":13,"text":"A microservices update about domain-driven squads, CDC testing, and happily ever after","markups":[]},{"name":"e38a","type":1,"text":"A couple years ago, Postman CTO and co-founder Ankit Sobti shared Postman’s struggle to escape from a microservices dependency hell. If you want to learn more about how and why Postman Engineering ventured into microservices, check out Ankit’s story.","markups":[{"type":3,"start":88,"end":131,"href":"https://medium.com/better-practices/conquering-the-microservices-dependency-hell-at-postman-with-postman-part-1-introduction-a1ae019bb934","title":"","rel":"","anchorType":0},{"type":3,"start":236,"end":249,"href":"https://medium.com/better-practices/conquering-the-microservices-dependency-hell-at-postman-with-postman-part-1-introduction-a1ae019bb934","title":"","rel":"","anchorType":0}]},{"name":"24f7","type":1,"text":"This is an update — here’s how Postman Engineering does microservices…","markups":[]}],"sections":[{"name":"9c8b","startIndex":0}]},"isFullContent":false,"subtitle":"A microservices update about domain-driven squads, CDC testing, and happily ever after"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"43d6128ff8d5":{"id":"43d6128ff8d5","versionId":"7f05597e49a3","creatorId":"6a98eb806571","homeCollectionId":"410f2fbc015d","title":"Serverless Functions the Fast Way","detectedLanguage":"en","latestVersion":"7f05597e49a3","latestPublishedVersion":"7f05597e49a3","hasUnpublishedEdits":false,"latestRev":613,"createdAt":1590515707920,"updatedAt":1639526435879,"acceptedAt":0,"firstPublishedAt":1592946808884,"latestPublishedAt":1592946808884,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Learn what they are, and how to create and deploy them in minutes with Netlify Functions","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*5ggKeRrQYM59VutL907FaQ.jpeg","filter":"","backgroundSize":"","originalWidth":4778,"originalHeight":3184,"strategy":"resample","height":0,"width":0},"wordCount":1878,"imageCount":16,"readingTime":8.63679245283019,"subtitle":"Learn what they are, and how to create and deploy them in minutes with Netlify Functions","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":25,"isBookmarked":false,"tags":[{"slug":"serverless","name":"Serverless","postCount":18283,"metadata":{"postCount":18283,"coverImage":{"id":"0*S21oqkkXXCRLbrkN","originalWidth":5842,"originalHeight":3895,"isFeatured":true,"unsplashPhotoId":"YI_9SivVt_s"}},"type":"Tag"},{"slug":"web-development","name":"Web Development","postCount":311114,"metadata":{"postCount":311114,"coverImage":{"id":"0*OOH5MOcrUEoopLWs.JPG","originalWidth":1920,"originalHeight":1148,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"javascript","name":"JavaScript","postCount":286672,"metadata":{"postCount":286672,"coverImage":{"id":"1*INT5dtKotyP0at13wyjJLg.png","originalWidth":3840,"originalHeight":2160,"isFeatured":true}},"type":"Tag"},{"slug":"programming","name":"Programming","postCount":450288,"metadata":{"postCount":450288,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://www.postman.com/product/api-client/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/sending-api-requests/requests/#url-encoded","alts":[],"httpStatus":200},{"url":"https://unsplash.com/developers","alts":[],"httpStatus":200},{"url":"https://github.com/new","alts":[],"httpStatus":200},{"url":"https://docs.netlify.com/cli/get-started/?utm_source=postman-blog&utm_medium=sls-intro-jl&utm_campaign=devex","alts":[],"httpStatus":200},{"url":"https://app.netlify.com/signup?utm_source=postman-blog&utm_medium=sls-intro-jl&utm_campaign=devex","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@alvannee?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html","alts":[],"httpStatus":200},{"url":"https://pedantic-perlman-2f1bba.netlify.app/","alts":[],"httpStatus":200},{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API","alts":[],"httpStatus":200},{"url":"http://app.netlify.com/start/deploy?repository=https://github.com/jlengstorf/serverless-functions-the-fast-way&utm_source=postman-blog&utm_medium=sls-intro-jl&utm_campaign=devex","alts":[],"httpStatus":200},{"url":"https://unsplash.com/s/photos/corgi?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://www.netlify.com/blog/2020/04/13/learn-how-to-accept-money-on-jamstack-sites-in-38-minutes/?utm_campaign=devex&utm_medium=stripe-jl&utm_source=blog?utm_source=postman-blog&utm_medium=sls-intro-jl&utm_campaign=devex","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/gists/blob/master/returnhtml.diff","alts":[],"httpStatus":200},{"url":"https://www.learnwithjason.dev/protect-secret-keys-in-jamstack-apps","alts":[],"httpStatus":200},{"url":"https://www.netlify.com/products/dev/?utm_source=postman-blog&utm_medium=sls-intro-jl&utm_campaign=devex","alts":[],"httpStatus":200},{"url":"https://github.com/jlengstorf/serverless-functions-the-fast-way","alts":[],"httpStatus":200},{"url":"https://www.netlify.com/blog/2019/11/18/what-are-microservices/?utm_source=postman-blog&utm_medium=sls-intro-jl&utm_campaign=devex","alts":[],"httpStatus":200},{"url":"https://pedantic-perlman-2f1bba.netlify.app/.netlify/functions/hello-world","alts":[],"httpStatus":200},{"url":"https://www.netlify.com/products/functions/?utm_source=postman-blog&utm_medium=sls-intro-jl&utm_campaign=devex","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1592946809495},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":219,"sectionCount":1,"readingList":0,"topics":[{"topicId":"63c6f1f93ee","slug":"javascript","createdAt":1493945704961,"deletedAt":0,"image":{"id":"1*5UyyDJ1ESD11yQNd1UVAaQ@2x.jpeg","originalWidth":5472,"originalHeight":3648},"name":"Javascript","description":"An ode to code.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Javascript News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"serverless-functions-the-fast-way","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"serverless-functions-the-fast-way-43d6128ff8d5","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*5ggKeRrQYM59VutL907FaQ.jpeg","originalWidth":4778,"originalHeight":3184,"isFeatured":true}},{"name":"4a61","type":3,"text":"Serverless Functions the Fast Way","markups":[],"alignment":1},{"name":"2392","type":13,"text":"Learn what they are, and how to create and deploy them in minutes…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Learn what they are, and how to create and deploy them in minutes with Netlify Functions"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/serverless-functions-the-fast-way/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"63c6f1f93ee","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"4a61","type":3,"text":"Serverless Functions the Fast Way","markups":[]},{"name":"2392","type":13,"text":"Learn what they are, and how to create and deploy them in minutes with Netlify Functions","markups":[]},{"name":"facf","type":1,"text":"For frontend developers, one of the biggest hurdles to creating full-blown web apps is the backend. In fact, there are often multiple hurdles hiding in the backend. For example, how do you process form submissions? And how can you store data?","markups":[]},{"name":"e830","type":1,"text":"It might seem that you need to create and…","markups":[]}],"sections":[{"name":"8ade","startIndex":0}]},"isFullContent":false,"subtitle":"Learn what they are, and how to create and deploy them in minutes with Netlify Functions"},"cardType":0,"isDistributionAlertDismissed":true,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"5d13eff44761":{"id":"5d13eff44761","versionId":"58ac85e98277","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"Graphing COVID time series data using Chart.js and Postman","detectedLanguage":"en","latestVersion":"58ac85e98277","latestPublishedVersion":"58ac85e98277","hasUnpublishedEdits":false,"latestRev":790,"createdAt":1585348279722,"updatedAt":1639442098869,"acceptedAt":0,"firstPublishedAt":1585634227252,"latestPublishedAt":1586381991406,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Learn to visualize API and other data using Postman’s visualizer","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*YrWv1YwhYwZ04tceaKmFGw.png","filter":"","backgroundSize":"","originalWidth":2784,"originalHeight":1778,"strategy":"resample","height":0,"width":0},"wordCount":1811,"imageCount":12,"readingTime":8.183962264150944,"subtitle":"Learn to visualize API and other data using Postman’s visualizer","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":22,"isBookmarked":false,"tags":[{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"data-visualization","name":"Data Visualization","postCount":67030,"metadata":{"postCount":67030,"coverImage":{"id":"1*VA7YwgGV-AIYUBAdGyi-UA.png","originalWidth":1194,"originalHeight":1122,"isFeatured":true,"alt":"Initial Color Circle concept developed by Issac Newton. Color Squares added by Theresa-Marie Rhyne for illustration purposes."}},"type":"Tag"},{"slug":"data","name":"Data","postCount":130759,"metadata":{"postCount":130759,"coverImage":{"id":"1*qBcx_pKqqUDnNfPo8uuSvg.jpeg","originalWidth":1280,"originalHeight":853}},"type":"Tag"},{"slug":"coding","name":"Coding","postCount":147692,"metadata":{"postCount":147692,"coverImage":{"id":"1*6d7Z0hJATq9WTTx_rM5RcA.jpeg","originalWidth":750,"originalHeight":409}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://handlebarsjs.com/","alts":[],"httpStatus":200},{"url":"https://handlebarsjs.com/guide/builtin-helpers.html#each","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/#pm","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/sending-api-requests/visualizer/","alts":[],"httpStatus":200},{"url":"https://www.chartjs.org/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/sending-api-requests/debugging-and-logs/#network-calls-with-the-postman-console","alts":[],"httpStatus":200},{"url":"https://www.chartjs.org/docs/latest/getting-started/","alts":[],"httpStatus":200},{"url":"https://covid-19-apis.postman.com/","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/scripts/intro-to-scripts/","alts":[],"httpStatus":200},{"url":"https://explore.postman.com/templates/6713/how-to-visualize-data-in-postman","alts":[],"httpStatus":200},{"url":"https://explore.postman.com/templates/6495/covidapi","alts":[],"httpStatus":200},{"url":"https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference","alts":[],"httpStatus":200},{"url":"https://www.getpostman.com/docs/v6/postman/launching_postman/newbutton#templates","alts":[],"httpStatus":403},{"url":"https://documenter.getpostman.com/view/1215211/SzYW4g6t?version=latest","alts":[],"httpStatus":200},{"url":"https://www.youtube.com/playlist?list=PL6yYBvW22vbqiyhb_U-RWfxuZNv0DKBP8","alts":[{"type":3,"url":"http://www.youtube.com/playlist?list=PL6yYBvW22vbqiyhb_U-RWfxuZNv0DKBP8&feature=applinks"},{"type":2,"url":"http://www.youtube.com/playlist?list=PL6yYBvW22vbqiyhb_U-RWfxuZNv0DKBP8&feature=applinks"}],"httpStatus":200},{"url":"https://github.com/pomber/covid19","alts":[],"httpStatus":200},{"url":"https://github.com/CSSEGISandData/COVID-19","alts":[],"httpStatus":200},{"url":"https://covidapi.info/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1586381992537},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":127,"sectionCount":1,"readingList":0,"topics":[{"topicId":"63c6f1f93ee","slug":"javascript","createdAt":1493945704961,"deletedAt":0,"image":{"id":"1*5UyyDJ1ESD11yQNd1UVAaQ@2x.jpeg","originalWidth":5472,"originalHeight":3648},"name":"Javascript","description":"An ode to code.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Javascript News and Articles — Medium","type":"Topic"},{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"graphing-covid-time-series-data-using-chart-js-and-postman","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"graphing-covid-time-series-data-using-chart-js-and-postman-5d13eff44761","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*YrWv1YwhYwZ04tceaKmFGw.png","originalWidth":2784,"originalHeight":1778,"isFeatured":true}},{"name":"9fa4","type":3,"text":"Graphing COVID time series data using Chart.js and Postman","markups":[],"alignment":1},{"name":"92fa","type":13,"text":"Learn to visualize API and other data using…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Learn to visualize API and other data using Postman’s visualizer"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"https://blog.postman.com/2020/04/08/how-to-graphing-covid-time-series-data-using-chart-js-and-postman-visualizer/","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"ae5d4995e225","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"9fa4","type":3,"text":"Graphing COVID time series data using Chart.js and Postman","markups":[]},{"name":"92fa","type":13,"text":"Learn to visualize API and other data using Postman’s visualizer","markups":[]},{"name":"9e6a","type":4,"text":"","markups":[],"layout":4,"metadata":{"id":"1*aVJ8kRX3wSgMWy9Pl4gquQ.jpeg","originalWidth":4000,"originalHeight":2250}},{"name":"f5e3","type":1,"text":"The Postman team has been hard at work creating a COVID-19 API Resource Center to give people easier access to public data. People in the broader community have come together to share and contribute to data in a variety of ways.","markups":[{"type":3,"start":50,"end":78,"href":"https://covid-19-apis.postman.com/","title":"","rel":"","anchorType":0}]},{"name":"8cc3","type":1,"text":"Let’s take one API and build a data…","markups":[]}],"sections":[{"name":"8a84","startIndex":0}]},"isFullContent":false,"subtitle":"Learn to visualize API and other data using Postman’s visualizer"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"836826231280":{"id":"836826231280","versionId":"1226838429ed","creatorId":"5c3e09856100","homeCollectionId":"410f2fbc015d","title":"AI APIs: What are they and how to use them","detectedLanguage":"en","latestVersion":"1226838429ed","latestPublishedVersion":"1226838429ed","hasUnpublishedEdits":false,"latestRev":1296,"createdAt":1563102429828,"updatedAt":1639407928215,"acceptedAt":0,"firstPublishedAt":1582670505020,"latestPublishedAt":1582670505020,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"A set of better practices for Artificial Intelligence APIs","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*2kFG0tq_Bg-L4oisfkj7gQ.jpeg","filter":"","backgroundSize":"","originalWidth":5014,"originalHeight":2464,"strategy":"resample","height":0,"width":0},"wordCount":1070,"imageCount":5,"readingTime":4.871069182389937,"subtitle":"A set of better practices for Artificial Intelligence APIs","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":9,"isBookmarked":false,"tags":[{"slug":"ai","name":"AI","postCount":434002,"metadata":{"postCount":434002,"coverImage":{"id":"0*Zs_B6zDXGdgkK2jv","originalWidth":5120,"originalHeight":2880,"isFeatured":true,"unsplashPhotoId":"_nWaeTF6qo0"}},"type":"Tag"},{"slug":"artificial-intelligence","name":"Artificial Intelligence","postCount":462428,"metadata":{"postCount":462428,"coverImage":{"id":"1*gAn_BSffVBcwCIR6bDgK1g.jpeg"}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"image-recognition","name":"Image Recognition","postCount":2251,"metadata":{"postCount":2251,"coverImage":{"id":"1*RqCxOgncGG9Gq7sNx3QzqQ.png","originalWidth":4976,"originalHeight":4268,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://lens.google.com/","alts":[],"httpStatus":200},{"url":"https://www.ibm.com/watson/products-services/","alts":[],"httpStatus":200},{"url":"https://aws.amazon.com/machine-learning/ai-services/","alts":[],"httpStatus":200},{"url":"https://www.clarifai.com/","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@mpho_mojapelo?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://play.google.com/store/apps/details?id=org.plantnet&hl=en_GB","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-gb/services/cognitive-services/directory/","alts":[],"httpStatus":200},{"url":"https://www.microsoft.com/en-us/ai/seeing-ai","alts":[],"httpStatus":200},{"url":"https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis","alts":[],"httpStatus":200},{"url":"https://cai.tools.sap/","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/apiops-the-art-of-mixing-apis-b0d85de88864","alts":[{"type":3,"url":"medium://p/b0d85de88864"},{"type":2,"url":"medium://p/b0d85de88864"}],"httpStatus":200},{"url":"https://cloud.google.com/products/ai/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1582670507772},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":22,"sectionCount":4,"readingList":0,"topics":[{"topicId":"1af65db9c2f8","slug":"artificial-intelligence","createdAt":1487916832419,"deletedAt":0,"image":{"id":"1*A28aHchbaA8zNVXraBq0Ug@2x.jpeg","originalWidth":4866,"originalHeight":3244},"name":"Artificial Intelligence","description":"Born to be bot.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"AI News and Artificial Intelligence Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"ai-apis-what-are-they-and-how-to-use-them","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"ai-apis-what-are-they-and-how-to-use-them-836826231280","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*2kFG0tq_Bg-L4oisfkj7gQ.jpeg","originalWidth":5014,"originalHeight":2464,"isFeatured":true}},{"name":"a27b","type":3,"text":"AI APIs: What are they and how to use them","markups":[],"alignment":1},{"name":"aba2","type":13,"text":"A set of better practices for Artificial Intelligence APIs","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"A set of better practices for Artificial Intelligence APIs"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"d228","type":4,"text":"Photo by Mpho Mojapelo on Unsplash","markups":[{"type":3,"start":9,"end":22,"href":"https://unsplash.com/@mpho_mojapelo?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0},{"type":3,"start":26,"end":34,"href":"https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0}],"layout":1,"metadata":{"id":"1*2kFG0tq_Bg-L4oisfkj7gQ.jpeg","originalWidth":5014,"originalHeight":2464,"isFeatured":true}},{"name":"a27b","type":3,"text":"AI APIs: What are they and how to use them","markups":[]},{"name":"aba2","type":13,"text":"A set of better practices for Artificial Intelligence APIs","markups":[]},{"name":"6ab6","type":1,"text":"Are you curious about speech-to-text, language translation, or image recognition APIs? You’re in luck! There are plenty of services that allow you to do this, and also, plenty of reasons to use Artificial Intelligence (AI) APIs in your applications. In this article, we’ll describe some of the use cases for…","markups":[]}],"sections":[{"name":"e9c1","startIndex":0}]},"isFullContent":false,"subtitle":"A set of better practices for Artificial Intelligence APIs"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"e3f0bae48456":{"id":"e3f0bae48456","versionId":"60b31e8b8ce7","creatorId":"7cc4c4e5ca55","homeCollectionId":"410f2fbc015d","title":"How to Win at Developer Adoption When You Only Have A Few Minutes to Impress","detectedLanguage":"en","latestVersion":"60b31e8b8ce7","latestPublishedVersion":"60b31e8b8ce7","hasUnpublishedEdits":false,"latestRev":255,"createdAt":1581438921938,"updatedAt":1639396528019,"acceptedAt":0,"firstPublishedAt":1581640610253,"latestPublishedAt":1581640610253,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Accelerate growth & conversions with these key developer onboarding strategies","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*bTRF8GkenTRgc-A4yGpA9w.png","filter":"","backgroundSize":"","originalWidth":1287,"originalHeight":1166,"strategy":"resample","height":0,"width":0},"wordCount":1205,"imageCount":4,"readingTime":5.247169811320755,"subtitle":"Accelerate growth & conversions with these key developer onboarding strategies","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":12,"isBookmarked":false,"tags":[{"slug":"technology","name":"Technology","postCount":2493918,"metadata":{"postCount":2493918,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"programming","name":"Programming","postCount":450288,"metadata":{"postCount":450288,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"development","name":"Development","postCount":113302,"metadata":{"postCount":113302,"coverImage":{"id":"1*sfKiyScj_l_fk0UzR1vMpw.png","originalWidth":5040,"originalHeight":2835,"isFeatured":true}},"type":"Tag"},{"slug":"documentation","name":"Documentation","postCount":7088,"metadata":{"postCount":7088,"coverImage":{"id":"0*7hM8dogh6AZWedF2","originalWidth":6000,"originalHeight":4000,"isFeatured":true,"unsplashPhotoId":"9_eMsFKGJiM"}},"type":"Tag"},{"slug":"developer-experience","name":"Developer Experience","postCount":1142,"metadata":{"postCount":1142,"coverImage":{"id":"1*_MRJtr_TNW5glq9b_AqaOg.png","originalWidth":744,"originalHeight":213,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://learning.getpostman.com/docs/postman/sending-api-requests/visualizer/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/collections/creating-collections/","alts":[],"httpStatus":200},{"url":"https://www.getpostman.com/resources/infographics/api-survey-2019/","alts":[],"httpStatus":200},{"url":"https://www.shipengine.com/new-feature-start-using-your-shipengine-sandbox-environment/?ref=postman-medium","alts":[],"httpStatus":200},{"url":"https://www.shipengine.com/introducing-multi-language-code-samples-in-shipengine-docs/?ref=postman-medium","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/design-apis-like-you-design-user-experience-a7adeb2ee90f","alts":[{"type":3,"url":"medium://p/a7adeb2ee90f"},{"type":2,"url":"medium://p/a7adeb2ee90f"}],"httpStatus":200},{"url":"https://www.shipengine.com/test-and-visualize-shipengine-apis-using-our-postman-collections/?ref=postman-medium","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/the-ultimate-api-publishers-guide-be74a2692326","alts":[{"type":3,"url":"medium://p/be74a2692326"},{"type":2,"url":"medium://p/be74a2692326"}],"httpStatus":200}],"version":"0.3","generatedAt":1581640611328},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":104,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"how-to-win-at-developer-adoption-when-you-only-have-a-few-minutes-to-impress","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"accelerate-growth-conversions-with-these-key-developer-onboarding-strategies-e3f0bae48456","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*bTRF8GkenTRgc-A4yGpA9w.png","originalWidth":1287,"originalHeight":1166,"isFeatured":true,"alt":"ShipEngine’s Redesigned Documentation Landing Page"}},{"name":"bd96","type":3,"text":"How to Win at Developer Adoption When You Only Have A Few Minutes to Impress","markups":[],"alignment":1},{"name":"207d","type":13,"text":"Accelerate growth &…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Accelerate growth & conversions with these key developer onboarding strategies"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1581620378411,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"bd96","type":3,"text":"How to Win at Developer Adoption When You Only Have A Few Minutes to Impress","markups":[]},{"name":"207d","type":13,"text":"Accelerate growth & conversions with these key developer onboarding strategies","markups":[]},{"name":"c9fe","type":4,"text":"ShipEngine’s Redesigned Documentation Landing Page","markups":[],"layout":4,"metadata":{"id":"1*bTRF8GkenTRgc-A4yGpA9w.png","originalWidth":1287,"originalHeight":1166,"isFeatured":true,"alt":"ShipEngine’s Redesigned Documentation Landing Page"}},{"name":"369e","type":1,"text":"Developers can be a skeptical bunch, particularly when it comes to sales pitches and product marketing. They may land on your API because of a successful pay-per-click ad on a Google search, but their clickthrough means nothing if you can’t convince them to integrate.","markups":[]},{"name":"8fc7","type":1,"text":"You only have a developer’s attention…","markups":[]}],"sections":[{"name":"d908","startIndex":0}]},"isFullContent":false,"subtitle":"Accelerate growth & conversions with these key developer onboarding strategies"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"d87588ac874":{"id":"d87588ac874","versionId":"e1f87c9ca61d","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"Bringing law and order to APIs with OpenAPI Specifications","detectedLanguage":"en","latestVersion":"e1f87c9ca61d","latestPublishedVersion":"e1f87c9ca61d","hasUnpublishedEdits":true,"latestRev":2300,"createdAt":1573248883498,"updatedAt":1695060323543,"acceptedAt":0,"firstPublishedAt":1573845427617,"latestPublishedAt":1573846081737,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"A better way to build and manage APIs using schemas, descriptions, and style guides","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*RSb13ih-eWr9crmpmFKVxw.jpeg","filter":"","backgroundSize":"","originalWidth":6000,"originalHeight":4000,"strategy":"resample","height":0,"width":0},"wordCount":2366,"imageCount":16,"readingTime":10.478301886792453,"subtitle":"A better way to build and manage APIs using schemas, descriptions, and style guides","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":70,"isBookmarked":false,"tags":[{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"development","name":"Development","postCount":113302,"metadata":{"postCount":113302,"coverImage":{"id":"1*sfKiyScj_l_fk0UzR1vMpw.png","originalWidth":5040,"originalHeight":2835,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"code","name":"Code","postCount":28202,"metadata":{"postCount":28202,"coverImage":{"id":"1*KI7c_xHTV5VIjygJDtp64g.png","originalWidth":1904,"originalHeight":820,"isFeatured":true}},"type":"Tag"},{"slug":"programming","name":"Programming","postCount":450288,"metadata":{"postCount":450288,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://e8c086f7-a5c9-4752-b81f-bfac0d0dc5d2.mock.pstmn.io,","alts":[],"httpStatus":0},{"url":"https://www.getpostman.com/","alts":[],"httpStatus":200},{"url":"https://json-schema.org/","alts":[],"httpStatus":200},{"url":"https://www.openapis.org/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/environments-and-globals/manage-environments/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/design-and-develop-apis/the-api-workflow/#importing-a-file","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/design-and-develop-apis/the-api-workflow/#generating-a-collection-from-a-schema","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/sending-api-requests/generate-code-snippets/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/mock-servers/intro-to-mock-servers/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/collections/intro-to-collections/","alts":[],"httpStatus":200},{"url":"https://nodejs.org/en/download/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/api-documentation/intro-to-api-documentation/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/collections/data-formats/#collections","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/design-and-develop-apis/managing-apis/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/scripts/test-scripts/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/monitors/intro-monitors/","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@lennykuhne?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/collection-runs/integration-with-jenkins/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/collection-runs/starting-a-collection-run/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/scripts/intro-to-scripts/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/collection-runs/integration-with-travis/","alts":[],"httpStatus":200},{"url":"https://www.npmjs.com/package/download","alts":[],"httpStatus":200},{"url":"https://raml.org/","alts":[],"httpStatus":200},{"url":"https://schema.getpostman.com/","alts":[],"httpStatus":200},{"url":"https://swagger.io/docs/specification/2-0/basic-structure/","alts":[],"httpStatus":200},{"url":"https://www.w3.org/Submission/wadl/","alts":[],"httpStatus":200},{"url":"https://www.w3.org/TR/2001/NOTE-wsdl-20010315","alts":[],"httpStatus":200},{"url":"https://unsplash.com/s/photos/assembly-line?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://twitter.com/philsturgeon","alts":[{"type":2,"url":"twitter://user?screen_name=philsturgeon"},{"type":3,"url":"twitter://user?screen_name=philsturgeon"}],"httpStatus":200},{"url":"https://github.com/postmanlabs/spectral-postman/blob/master/bin/deploy.sh","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/spectral-postman/blob/master/.spectral.yaml","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/spectral-postman","alts":[],"httpStatus":200},{"url":"https://explore.postman.com/team/TwitterAdsAPI","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/spectral-postman/blob/master/README.md","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/newman","alts":[],"httpStatus":200},{"url":"https://github.com/nodeschool/discussions/wiki/Installing-global-node-modules-(Linux-and-Mac)","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/spectral-postman/blob/master/cosmos.yaml","alts":[],"httpStatus":200},{"url":"https://documenter.getpostman.com/view/1559645/SW7T7WmM?version=latest#3a5e52d8-969b-46e9-88a2-d1213aa96aca","alts":[],"httpStatus":200},{"url":"https://documenter.getpostman.com/view/1559645/SW7T7WmM?version=latest#96cd8068-7d50-4d94-b221-4be0ee36f4bb","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/from-manual-to-automated-testing-the-roadblocks-and-the-journey-6333dfacc5ae","alts":[{"type":3,"url":"medium://p/6333dfacc5ae"},{"type":2,"url":"medium://p/6333dfacc5ae"}],"httpStatus":200},{"url":"https://medium.com/better-practices/git-hooks-for-automation-135c62bca7d7","alts":[{"type":3,"url":"medium://p/135c62bca7d7"},{"type":2,"url":"medium://p/135c62bca7d7"}],"httpStatus":200},{"url":"https://github.com/stoplightio/spectral","alts":[],"httpStatus":200},{"url":"https://docs.api.getpostman.com","alts":[],"httpStatus":200},{"url":"https://documenter.getpostman.com/view/1559645/RzZFCGFR","alts":[],"httpStatus":200},{"url":"https://apisyouwonthate.com/blog/automated-style-guides-for-rest-graphql-and-grpc","alts":[],"httpStatus":200},{"url":"https://stoplight.io/p/docs/gh/stoplightio/spectral/docs/getting-started/installation.md","alts":[],"httpStatus":200},{"url":"https://stoplight.io/p/docs/gh/stoplightio/spectral/docs/getting-started/rulesets.md","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/api-first-software-development-for-modern-organizations-fdbfba9a66d3","alts":[{"type":3,"url":"medium://p/fdbfba9a66d3"},{"type":2,"url":"medium://p/fdbfba9a66d3"}],"httpStatus":200},{"url":"https://medium.com/better-practices/design-apis-like-you-design-user-experience-a7adeb2ee90f","alts":[{"type":3,"url":"medium://p/a7adeb2ee90f"},{"type":2,"url":"medium://p/a7adeb2ee90f"}],"httpStatus":200}],"version":"0.3","generatedAt":1573846083698},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":335,"sectionCount":2,"readingList":0,"topics":[{"topicId":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"bringing-law-and-order-to-apis-with-openapi-specifications","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"api-specifications-d87588ac874","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*RSb13ih-eWr9crmpmFKVxw.jpeg","originalWidth":6000,"originalHeight":4000,"isFeatured":true}},{"name":"3aac","type":3,"text":"Bringing law and order to APIs with OpenAPI Specifications","markups":[],"alignment":1},{"name":"e428","type":13,"text":"A better way to build and manage APIs using…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"A better way to build and manage APIs using schemas, descriptions, and style guides"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"55f1c20aba7a","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"3aac","type":3,"text":"Bringing law and order to APIs with OpenAPI Specifications","markups":[]},{"name":"e428","type":13,"text":"A better way to build and manage APIs using schemas, descriptions, and style guides","markups":[]},{"name":"ac86","type":4,"text":"Photo by Lenny Kuhne on Unsplash","markups":[{"type":3,"start":9,"end":20,"href":"https://unsplash.com/@lennykuhne?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0},{"type":3,"start":24,"end":32,"href":"https://unsplash.com/s/photos/assembly-line?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0}],"layout":4,"metadata":{"id":"1*RSb13ih-eWr9crmpmFKVxw.jpeg","originalWidth":6000,"originalHeight":4000,"isFeatured":true}},{"name":"5124","type":1,"text":"A specification is a technical document that tells you how a thing works.","markups":[]},{"name":"9e6d","type":1,"text":"If you’re building cars, a specification tells you how a car works. It includes the most important details and perhaps a list of requirements that the end product should fulfill. Once the car gets built, the owner’s…","markups":[]}],"sections":[{"name":"6bd1","startIndex":0}]},"isFullContent":false,"subtitle":"A better way to build and manage APIs using schemas, descriptions, and style guides"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"df713eb9788c":{"id":"df713eb9788c","versionId":"691610b03518","creatorId":"6d7cc8aa9337","homeCollectionId":"410f2fbc015d","title":"UI Testing with Postman","detectedLanguage":"en","latestVersion":"691610b03518","latestPublishedVersion":"691610b03518","hasUnpublishedEdits":false,"latestRev":1559,"createdAt":1550169273625,"updatedAt":1639312981294,"acceptedAt":0,"firstPublishedAt":1572625726936,"latestPublishedAt":1621832353944,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Postman is a tool commonly used to work with APIs. It provides an easy way to make HTTP calls and run scripts during various phases of the…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*faIUHCRXbg7lDwPHiWHZiA.jpeg","filter":"","backgroundSize":"","originalWidth":5626,"originalHeight":3393,"strategy":"resample","height":0,"width":0},"wordCount":1391,"imageCount":5,"readingTime":6.082389937106918,"subtitle":"Postman is a tool commonly used to work with APIs. It provides an easy way to make HTTP calls and run scripts during various phases of the…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":53,"isBookmarked":false,"tags":[{"slug":"web-development","name":"Web Development","postCount":311114,"metadata":{"postCount":311114,"coverImage":{"id":"0*OOH5MOcrUEoopLWs.JPG","originalWidth":1920,"originalHeight":1148,"isFeatured":true}},"type":"Tag"},{"slug":"testing","name":"Testing","postCount":42899,"metadata":{"postCount":42899,"coverImage":{"id":"1*lMcdt2Y_t3lA0v_FqeSKog.jpeg","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"javascript","name":"JavaScript","postCount":286672,"metadata":{"postCount":286672,"coverImage":{"id":"1*INT5dtKotyP0at13wyjJLg.png","originalWidth":3840,"originalHeight":2160,"isFeatured":true}},"type":"Tag"},{"slug":"frontend","name":"Frontend","postCount":17837,"metadata":{"postCount":17837,"coverImage":{"id":"1*PZq1oA0oqpopgZnaPJCWTA.png","originalWidth":2814,"originalHeight":1378,"isFeatured":true,"alt":"12 Frontend Micro-Interactions That Users Secretly Judge"}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://'","alts":[],"httpStatus":0},{"url":"https://ankit-m.github.io/blog/ui-testing-in-postman/","alts":[],"httpStatus":200},{"url":"https://unsplash.com/s/photos/website?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@igormiske?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/collection-runs/command-line-integration-with-newman/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/","alts":[],"httpStatus":200},{"url":"https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url={{url}}","alts":[],"httpStatus":400},{"url":"https://learning.getpostman.com/docs/postman/monitors/intro-monitors/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman-pro/integrations/slack/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/scripts/postman-sandbox-api-reference/#pmsendrequest","alts":[],"httpStatus":200},{"url":"https://developers.google.com/speed/docs/insights/v5/get-started","alts":[],"httpStatus":200},{"url":"https://explore.postman.com/templates/4238","alts":[],"httpStatus":200},{"url":"https://www.getpostman.com/","alts":[],"httpStatus":200},{"url":"https://documenter.getpostman.com/view/1411527/SW12zxWj","alts":[],"httpStatus":200},{"url":"https://www.owasp.org/index.php/OWASP_Secure_Headers_Project#tab=Headers","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1621832355585},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":138,"sectionCount":3,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"ui-testing-with-postman","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"ui-testing-with-postman-df713eb9788c","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*faIUHCRXbg7lDwPHiWHZiA.jpeg","originalWidth":5626,"originalHeight":3393,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"UI Testing with Postman","alignment":1},{"name":"previewSubtitle","type":13,"text":"Postman is a tool commonly used to work with APIs. It provides an easy way to…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Postman is a tool commonly used to work with APIs. It provides an easy way to make HTTP calls and run scripts during various phases of the…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"5486","type":3,"text":"UI Testing with Postman","markups":[]},{"name":"0dce","type":13,"text":"Use Postman’s API testing features to continuously test application UI.","markups":[]},{"name":"68bb","type":4,"text":"Photo by Igor Miske on Unsplash","markups":[{"type":3,"start":9,"end":19,"href":"https://unsplash.com/@igormiske?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0},{"type":3,"start":23,"end":31,"href":"https://unsplash.com/s/photos/website?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0}],"layout":5,"metadata":{"id":"1*faIUHCRXbg7lDwPHiWHZiA.jpeg","originalWidth":5626,"originalHeight":3393,"isFeatured":true}},{"name":"968a","type":6,"text":"Read this story on my blog: https://ankit-m.github.io/blog/ui-testing-in-postman/","markups":[{"type":3,"start":28,"end":81,"href":"https://ankit-m.github.io/blog/ui-testing-in-postman/","title":"","rel":"noopener","anchorType":0},{"type":1,"start":0,"end":26}]},{"name":"6c7b","type":1,"text":"Postman is a tool commonly used to work with APIs. It provides an easy way to make HTTP calls and run scripts during various phases of the request. We can leverage these features for continuous and automated UI testing.","markups":[{"type":3,"start":0,"end":7,"href":"https://www.getpostman.com/","title":"","rel":"noopener","anchorType":0},{"type":1,"start":183,"end":208}]},{"name":"731e","type":1,"text":"This article outlines a…","markups":[]}],"sections":[{"name":"f79a","startIndex":0}]},"isFullContent":false,"subtitle":"Postman is a tool commonly used to work with APIs. It provides an easy way to make HTTP calls and run scripts during various phases of the…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"d3ef238ec328":{"id":"d3ef238ec328","versionId":"d20122340a71","creatorId":"8e51cb7fb823","homeCollectionId":"410f2fbc015d","title":"Learn how your Kubernetes clusters respond to failure using Gremlin and Grafana","detectedLanguage":"en","latestVersion":"d20122340a71","latestPublishedVersion":"d20122340a71","hasUnpublishedEdits":false,"latestRev":4175,"createdAt":1564603839678,"updatedAt":1639216143077,"acceptedAt":0,"firstPublishedAt":1566326129910,"latestPublishedAt":1566492623160,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Building resilient APIs with chaos engineering","postDisplay":{"coverless":true},"metaDescription":"Learn how your Kubernetes clusters respond to failure using Gremlin and Grafana"},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Yeu19v1w20PpePBBPISaJQ.jpeg","filter":"","backgroundSize":"","originalWidth":5184,"originalHeight":3456,"strategy":"resample","height":0,"width":0},"wordCount":2836,"imageCount":20,"readingTime":12.45188679245283,"subtitle":"Building resilient APIs with chaos engineering","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":74,"isBookmarked":false,"tags":[{"slug":"chaos-engineering","name":"Chaos Engineering","postCount":1026,"metadata":{"postCount":1026,"coverImage":{"id":"1*xJFzDLSqS8C90B5RdnRkTw.png","originalWidth":1920,"originalHeight":762,"isFeatured":true}},"type":"Tag"},{"slug":"devops","name":"DevOps","postCount":102215,"metadata":{"postCount":102215,"coverImage":{"id":"1*BqVsCBa2mLv1UWQrdhjX5w.png","originalWidth":1500,"originalHeight":750,"isFeatured":true,"alt":"How I Am Using a Lifetime 100% Free Server"}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"kubernetes","name":"Kubernetes","postCount":60428,"metadata":{"postCount":60428,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://aws.amazon.com/eks/","alts":[],"httpStatus":200},{"url":"https://www.hbo.com/chernobyl","alts":[],"httpStatus":200},{"url":"https://principlesofchaos.org/","alts":[],"httpStatus":200},{"url":"https://app.getpostman.com/run-collection/b07acbdc8e6f2d2b59f8#?env%5BchaosEngineering%5D=W3sia2V5IjoibW9ja191cmwiLCJ2YWx1ZSI6Imh0dHBzOi8vYmQwMTVmMWUtNjQwMS00MzdkLTliYjYtYTk4NDg4MmVlMzNlLm1vY2sucHN0bW4uaW8iLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6ImdyZW1saW5fYXBpIiwidmFsdWUiOiJodHRwczovL2FwaS5ncmVtbGluLmNvbS92MSIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiZ3JlbWxpbl9hcGlfa2V5IiwidmFsdWUiOiJ5b3VyLWdyZW1saW4tYXBpLWtleSIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoieW91cl9kZXBsb3llZF9hcHBfVVJMIiwidmFsdWUiOiJ5b3VyLWRlcGxveWVkLWFwcC11cmwiLCJlbmFibGVkIjp0cnVlfV0=","alts":[],"httpStatus":200},{"url":"https://www.gremlin.com/community/tutorials/how-to-install-and-use-gremlin-with-eks/#step-4---deploy-a-microservice-demo-application","alts":[],"httpStatus":200},{"url":"https://grafana.com/","alts":[],"httpStatus":200},{"url":"https://www.gremlin.com/community/tutorials/how-to-install-and-use-gremlin-with-eks/#step-5---run-a-shutdown-container-attack-using-gremlin","alts":[],"httpStatus":200},{"url":"https://www.gremlin.com/community/tutorials/how-to-install-and-use-gremlin-with-eks/","alts":[],"httpStatus":200},{"url":"https://www.gremlin.com/community/tutorials/how-to-install-and-use-gremlin-with-eks/#step-2---deploy-kubernetes-dashboard","alts":[],"httpStatus":200},{"url":"https://www.gremlin.com/community/tutorials/how-to-install-and-use-gremlin-with-eks/#step-1---create-an-eks-cluster-using-eksctl","alts":[],"httpStatus":200},{"url":"https://www.gremlin.com/","alts":[],"httpStatus":200},{"url":"https://www.gremlin.com/community/tutorials/how-to-install-and-use-gremlin-with-eks/#step-2---load-up-the-kubeconfig-for-the-cluster","alts":[],"httpStatus":200},{"url":"https://www.gremlin.com/community/tutorials/how-to-install-and-use-gremlin-with-eks/#step-0---verify-your-account-aws-cli-installation","alts":[],"httpStatus":200},{"url":"https://aws.amazon.com/gameday/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/environments_and_globals/manage_environments/#editing-an-active-environment","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/launching_postman/newbutton/#templates","alts":[],"httpStatus":200},{"url":"https://prometheus.io/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/mock_servers/intro_to_mock_servers","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/collection_runs/starting_a_collection_run","alts":[],"httpStatus":200},{"url":"https://github.com/GoogleCloudPlatform/microservices-demo/blob/master/kubernetes-manifests/cartservice.yaml","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/pulse/would-chaos-any-othername-casey-rosenthal/","alts":[],"httpStatus":200},{"url":"https://gph.is/1sFFzLq","alts":[],"httpStatus":200},{"url":"https://github.com/Netflix/chaosmonkey","alts":[],"httpStatus":200},{"url":"https://github.com/dastergon/awesome-chaos-engineering","alts":[],"httpStatus":200},{"url":"https://github.com/postmanlabs/kubernetes-chaos","alts":[],"httpStatus":200},{"url":"https://twitter.com/tammybutow","alts":[{"type":2,"url":"twitter://user?screen_name=tammybutow"},{"type":3,"url":"twitter://user?screen_name=tammybutow"}],"httpStatus":200},{"url":"https://twitter.com/caseyrosenthal?","alts":[{"type":2,"url":"twitter://user?screen_name=caseyrosenthal"},{"type":3,"url":"twitter://user?screen_name=caseyrosenthal"}],"httpStatus":200},{"url":"https://twitter.com/a_bangser","alts":[{"type":2,"url":"twitter://user?screen_name=a_bangser"},{"type":3,"url":"twitter://user?screen_name=a_bangser"}],"httpStatus":200},{"url":"https://github.com/kubernetes/dashboard","alts":[],"httpStatus":200},{"url":"https://www.moo.com","alts":[],"httpStatus":200},{"url":"https://medium.com/htc-research-engineering-blog/monitoring-kubernetes-clusters-with-grafana-e2a413febefd","alts":[{"type":3,"url":"medium://p/e2a413febefd"},{"type":2,"url":"medium://p/e2a413febefd"}],"httpStatus":200},{"url":"https://techbeacon.com/app-dev-testing/test-production-yes-you-can-you-should","alts":[{"type":1,"url":"https://cdn.ampproject.org/c/s/techbeacon.com/app-dev-testing/test-production-yes-you-can-you-should?amp"}],"httpStatus":200},{"url":"https://kubernetes.io/docs/concepts/workloads/pods/pod/","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/deploying-a-scalable-web-application-with-docker-and-kubernetes-a5000a06c4e9","alts":[{"type":3,"url":"medium://p/a5000a06c4e9"},{"type":2,"url":"medium://p/a5000a06c4e9"}],"httpStatus":200},{"url":"https://www.gremlin.com/blog/making-your-apis-more-resilient-with-gremlin/","alts":[],"httpStatus":200},{"url":"https://www.gremlin.com/docs/api-reference/overview/","alts":[],"httpStatus":200},{"url":"https://documenter.getpostman.com/view/1559645/SVfH1sqD","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/dont-get-techcrunched-performance-testing-for-your-http-apis-3196e40f6b70","alts":[{"type":3,"url":"medium://p/3196e40f6b70"},{"type":2,"url":"medium://p/3196e40f6b70"}],"httpStatus":200},{"url":"https://youtu.be/9MvcXO4L4Tk","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=9MvcXO4L4Tk&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=9MvcXO4L4Tk&feature=applinks"}],"httpStatus":200},{"url":"https://medium.com/better-practices/deploying-a-scalable-web-application-with-docker-and-kubernetes-a5000a06c4e9#ed88","alts":[{"type":3,"url":"medium://p/a5000a06c4e9"},{"type":2,"url":"medium://p/a5000a06c4e9"}],"httpStatus":200},{"url":"https://twitter.com/koltonandrus","alts":[{"type":2,"url":"twitter://user?screen_name=KoltonAndrus"},{"type":3,"url":"twitter://user?screen_name=KoltonAndrus"}],"httpStatus":200},{"url":"https://cloud.google.com/solutions/dr-scenarios-planning-guide","alts":[],"httpStatus":200},{"url":"https://www.pagerduty.com/blog/chaoscat-automating-fault-injection/","alts":[],"httpStatus":200},{"url":"https://www.verica.io/","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices","alts":[{"type":2,"url":"medium://better-practices"},{"type":3,"url":"medium://better-practices"}],"httpStatus":200},{"url":"https://medium.com/netflix-techblog/the-netflix-simian-army-16e57fbab116","alts":[{"type":3,"url":"medium://p/16e57fbab116"},{"type":2,"url":"medium://p/16e57fbab116"}],"httpStatus":200},{"url":"https://www.twilio.com/blog/2017/11/chaos-engineering-ratequeue-ha.html","alts":[],"httpStatus":200},{"url":"https://medium.com/netflix-techblog/lessons-netflix-learned-from-the-aws-outage-deefe5fd0c04","alts":[{"type":3,"url":"medium://p/deefe5fd0c04"},{"type":2,"url":"medium://p/deefe5fd0c04"}],"httpStatus":200},{"url":"https://medium.com/better-practices/api-first-software-development-for-modern-organizations-fdbfba9a66d3","alts":[{"type":2,"url":"medium://p/fdbfba9a66d3"},{"type":3,"url":"medium://p/fdbfba9a66d3"}],"httpStatus":200},{"url":"https://www.oreilly.com/ideas/chaos-engineering","alts":[],"httpStatus":200},{"url":"https://medium.com/better-practices/reverse-engineering-an-api-403fae885303","alts":[{"type":3,"url":"medium://p/403fae885303"},{"type":2,"url":"medium://p/403fae885303"}],"httpStatus":200}],"version":"0.3","generatedAt":1566492625512},"isLockedPreviewOnly":false,"metaDescription":"Learn how your Kubernetes clusters respond to failure using Gremlin and Grafana","totalClapCount":411,"sectionCount":3,"readingList":0,"topics":[{"topicId":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"building-resilient-apis-with-chaos-engineering","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"chaos-d3ef238ec328","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*Yeu19v1w20PpePBBPISaJQ.jpeg","originalWidth":5184,"originalHeight":3456,"isFeatured":true}},{"name":"519d","type":3,"text":"Learn how your Kubernetes clusters respond to failure using Gremlin and Grafana","markups":[],"alignment":1},{"name":"90b7","type":13,"text":"Building resilient…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Building resilient APIs with chaos engineering"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"55f1c20aba7a","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"519d","type":3,"text":"Learn how your Kubernetes clusters respond to failure using Gremlin and Grafana","markups":[]},{"name":"90b7","type":13,"text":"Building resilient APIs with chaos engineering","markups":[]},{"name":"803e","type":1,"text":"I don’t deal with failure well. But I’ve gotten better at it because I fail a lot. In fact, the more I fail, the better I anticipate all the ways I can possibly crash and burn and shore up those vulnerabilities.","markups":[]},{"name":"8b85","type":1,"text":"This anticipation could keep me up at night, but…","markups":[{"type":2,"start":18,"end":23}]}],"sections":[{"name":"553b","startIndex":0}]},"isFullContent":false,"subtitle":"Building resilient APIs with chaos engineering"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"135c62bca7d7":{"id":"135c62bca7d7","versionId":"99f30cdeaa0d","creatorId":"d74f4b51eb4f","homeCollectionId":"410f2fbc015d","title":"Elevate your automation game by using Git Hooks","detectedLanguage":"en","latestVersion":"99f30cdeaa0d","latestPublishedVersion":"99f30cdeaa0d","hasUnpublishedEdits":false,"latestRev":1366,"createdAt":1565305802231,"updatedAt":1639206756432,"acceptedAt":0,"firstPublishedAt":1565898363605,"latestPublishedAt":1565898695344,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Automatically consume APIs and perform behind-the-scenes actions with your everyday Git commands","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*qbm_r1myYrM2iYnj","filter":"","backgroundSize":"","originalWidth":4970,"originalHeight":3264,"strategy":"resample","height":0,"width":0},"wordCount":1027,"imageCount":8,"readingTime":5.00880503144654,"subtitle":"Automatically consume APIs and perform behind-the-scenes actions with your everyday Git commands","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":59,"isBookmarked":false,"tags":[{"slug":"git-hooks","name":"Git Hooks","postCount":279,"metadata":{"postCount":279,"coverImage":{"id":"1*6VEEsRycTYAHTlofJtTb6w.png","originalWidth":450,"originalHeight":350,"isFeatured":true}},"type":"Tag"},{"slug":"postman","name":"Postman","postCount":3895,"metadata":{"postCount":3895,"coverImage":{"id":"1*q8mehtnD0r_dSOgGeg1pkQ.png","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"api","name":"API","postCount":57405,"metadata":{"postCount":57405,"coverImage":{"id":"1*X2H57CqL3bVH1Pc17HCtHg.jpeg","originalWidth":1280,"originalHeight":634,"isFeatured":true}},"type":"Tag"},{"slug":"automation","name":"Automation","postCount":62895,"metadata":{"postCount":62895,"coverImage":{"id":"1*Z42dmszgUoF6-ztCNqo8tg.png","originalWidth":4993,"originalHeight":2527,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":328398,"metadata":{"postCount":328398,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://unsplash.com?utm_source=medium&utm_medium=referral","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@efekurnaz?utm_source=medium&utm_medium=referral","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@spacex?utm_source=medium&utm_medium=referral","alts":[],"httpStatus":200},{"url":"https://snyk.io/","alts":[],"httpStatus":200},{"url":"https://developer.github.com/webhooks/","alts":[],"httpStatus":200},{"url":"https://git-scm.com/","alts":[],"httpStatus":200},{"url":"https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks","alts":[],"httpStatus":200},{"url":"https://githooks.com/","alts":[],"httpStatus":200},{"url":"https://greenkeeper.io/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/collections/version_control/","alts":[],"httpStatus":200},{"url":"https://docs.api.getpostman.com/?version=latest#99810ef3-3cc0-a6cc-06f5-d8e2ae9d84e4","alts":[],"httpStatus":200},{"url":"https://codeship.com/","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/postman_api/intro_api/#authentication","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/collections/data_formats/#collections","alts":[],"httpStatus":200},{"url":"https://github.com/git/git/blob/master/templates/hooks--pre-rebase.sample","alts":[],"httpStatus":200},{"url":"https://docs.api.getpostman.com/?version=latest#647806d5-492a-eded-1df6-6529b5dc685c","alts":[],"httpStatus":200},{"url":"https://github.com/git/git/blob/master/Documentation/githooks.txt#L142","alts":[],"httpStatus":200},{"url":"https://github.com/git/git/blob/master/Documentation/githooks.txt#L295","alts":[],"httpStatus":200},{"url":"https://github.com/git/git/blob/master/Documentation/githooks.txt#L221","alts":[],"httpStatus":200},{"url":"https://github.com/git/git/blob/master/Documentation/githooks.txt#L160","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman/workspaces/intro_to_workspaces","alts":[],"httpStatus":200},{"url":"https://github.com/git/git/blob/master/Documentation/githooks.txt#L178","alts":[],"httpStatus":200},{"url":"https://github.com/git/git/blob/master/Documentation/githooks.txt#L192","alts":[],"httpStatus":200},{"url":"https://github.com/git/git/blob/master/templates/hooks--pre-commit.sample","alts":[],"httpStatus":200},{"url":"https://learning.getpostman.com/docs/postman_pro/managing_postman_pro/roles_and_permissions/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1565898697335},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":235,"sectionCount":4,"readingList":0,"topics":[{"topicId":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"using-git-hooks-to-automate-workflow","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"git-hooks-for-automation-135c62bca7d7","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*qbm_r1myYrM2iYnj","originalWidth":4970,"originalHeight":3264,"isFeatured":true,"unsplashPhotoId":"Rs5BQj5zbf8"}},{"name":"8f15","type":3,"text":"Elevate your automation game by using Git Hooks","markups":[],"alignment":1},{"name":"94ef","type":13,"text":"Automatically consume APIs and perform…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Automatically consume APIs and perform behind-the-scenes actions with your everyday Git commands"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"410f2fbc015d","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"55f1c20aba7a","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"8f15","type":3,"text":"Elevate your automation game by using Git Hooks","markups":[]},{"name":"94ef","type":13,"text":"Automatically consume APIs and perform behind-the-scenes actions with your everyday Git commands","markups":[]},{"name":"9252","type":1,"text":"Most of us are using Git to version control our source code and to provide us with a simple way to collaborate on projects.","markups":[{"type":3,"start":21,"end":24,"href":"https://git-scm.com/","title":"","rel":"","anchorType":0}]},{"name":"4cd5","type":1,"text":"Over time we’ve seen how this workflow has grown with connected apps — be it Codeship for CI, Snyk for vulnerability management, or Greenkeeper for managing…","markups":[{"type":3,"start":77,"end":85,"href":"https://codeship.com/","title":"","rel":"","anchorType":0},{"type":3,"start":94,"end":98,"href":"https://snyk.io/","title":"","rel":"","anchorType":0},{"type":3,"start":132,"end":143,"href":"https://greenkeeper.io/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"c438","startIndex":0}]},"isFullContent":false,"subtitle":"Automatically consume APIs and perform behind-the-scenes actions with your everyday Git commands"},"cardType":0,"isDistributionAlertDismissed":true,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"}}},"paging":{"path":"/_/api/collections/410f2fbc015d/stream","next":{"to":"1565898363605","ignoredIds":[],"page":4}},"collection":{"id":"410f2fbc015d","name":"Better Practices","slug":"better-practices","tags":["API","SOFTWARE DEVELOPMENT","TESTING","DEVELOPER TOOLS","SOFTWARE ENGINEERING"],"creatorId":"94144f041644","description":"For individual engineers to the largest teams, Better Practices is intended to distill knowledge from the Postman community. This is a place to learn about modern software practices together! Read more: https://medium.com/better-practices/introducing-better-practices-e9cf14cf0c88","shortDescription":"For individual engineers to the largest teams, Better…","image":{"imageId":"1*KRFQANUncaYZMQl1i0eXqg.png","filter":"","backgroundSize":"","originalWidth":600,"originalHeight":601,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":8616,"activeAt":1688663072249},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"1*cdBy0vdt5ZlUlRaxt20K6w.png","filter":"","backgroundSize":"","originalWidth":600,"originalHeight":72,"strategy":"resample","height":0,"width":0},"twitterUsername":"getpostman","facebookPageName":"getpostman","publicEmail":"joyce@postman.com","sections":[{"type":2,"collectionHeaderMetadata":{"backgroundImage":{"id":"1*-GYfQtC8YTx0Pc5ZHP15Pw.png","originalWidth":3000,"originalHeight":1500,"focusPercentX":45.357142857142854,"focusPercentY":13.571428571428571},"logoImage":{"id":"1*Pu1GkYWY2UKlPgXLDgbwIg@2x.png","originalWidth":625,"originalHeight":466,"alt":"Better Practices"},"alignment":2,"layout":6}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":4,"postIds":["8885a7601523","bace9cac42e1","a0c7dde28bd4","1e065fbbc29f"]}},{"type":1,"postListMetadata":{"source":1,"layout":1,"number":2,"postIds":["b32da63f4f94","1a8b08d79fca"],"sectionHeader":"Trending"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":25,"postIds":["142aab534e6b","5011c9dfb0fa","99aba45a572b","c7b15c03f306","8476bd6fa51b","4acadab0f003","62ac3959de44","af904a74d32b","cdc7da7759ca","7f62d2276b62","d2269a025ae6","15c8807f6393","b6f302a67426","1ef992192f15","662707e0ef9e","6aec096dc9bf","aa026a3d682d","43d6128ff8d5","5d13eff44761","836826231280","e3f0bae48456","d87588ac874","df713eb9788c","d3ef238ec328","135c62bca7d7"],"sectionHeader":"Latest"}}],"tintColor":"#FF58AAC7","lightText":true,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF3D92AE","point":0},{"color":"#FF3D87A1","point":0.1},{"color":"#FF3C7D93","point":0.2},{"color":"#FF3A7285","point":0.3},{"color":"#FF376778","point":0.4},{"color":"#FF335B6A","point":0.5},{"color":"#FF2F505C","point":0.6},{"color":"#FF29444E","point":0.7},{"color":"#FF23373F","point":0.8},{"color":"#FF1B2A30","point":0.9},{"color":"#FF111C20","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF58AAC7","point":0},{"color":"#FF6CB4CE","point":0.1},{"color":"#FF7EBDD5","point":0.2},{"color":"#FF8EC6DC","point":0.3},{"color":"#FF9ECFE2","point":0.4},{"color":"#FFAED8E9","point":0.5},{"color":"#FFBDE0EF","point":0.6},{"color":"#FFCBE9F5","point":0.7},{"color":"#FFDAF1FC","point":0.8},{"color":"#FFE8FAFF","point":0.9},{"color":"#FFF5FFFF","point":1}],"backgroundColor":"#FF58AAC7"},"highlightSpectrum":{"colorPoints":[{"color":"#FFE6F6FD","point":0},{"color":"#FFE1F5FE","point":0.1},{"color":"#FFDCF4FE","point":0.2},{"color":"#FFD7F3FF","point":0.3},{"color":"#FFD2F2FF","point":0.4},{"color":"#FFCDF1FF","point":0.5},{"color":"#FFC7F0FF","point":0.6},{"color":"#FFC2EFFF","point":0.7},{"color":"#FFBCEDFF","point":0.8},{"color":"#FFB6ECFF","point":0.9},{"color":"#FFB0EBFF","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF58AAC7","point":0},{"color":"#FF6AB2CD","point":0.1},{"color":"#FF7AB9D2","point":0.2},{"color":"#FF89C1D7","point":0.3},{"color":"#FF98C8DB","point":0.4},{"color":"#FFA5CFE0","point":0.5},{"color":"#FFB3D6E5","point":0.6},{"color":"#FFC0DDE9","point":0.7},{"color":"#FFCCE4EE","point":0.8},{"color":"#FFD9EAF2","point":0.9},{"color":"#FFE5F1F7","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":1,"title":"Development","tagSlug":"software-development","url":"https://medium.com/better-practices/tagged/software-development","source":"tagSlug"},{"type":1,"title":"Testing","tagSlug":"testing","url":"https://medium.com/better-practices/tagged/testing","source":"tagSlug"},{"type":1,"title":"Publishing","tagSlug":"documentation","url":"https://medium.com/better-practices/tagged/documentation","source":"tagSlug"},{"type":1,"title":"DevOps","tagSlug":"devops","url":"https://medium.com/better-practices/tagged/devops","source":"tagSlug"}],"colorBehavior":2,"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"backgroundImage":{"id":"1*-GYfQtC8YTx0Pc5ZHP15Pw.png","originalWidth":3000,"originalHeight":1500,"focusPercentX":45.357142857142854,"focusPercentY":13.571428571428571},"logoImage":{"id":"1*Pu1GkYWY2UKlPgXLDgbwIg@2x.png","originalWidth":625,"originalHeight":466,"alt":"Better Practices"},"alignment":2,"layout":6},"subscriberCount":8616,"tagline":"For individual engineers to the largest teams, Better…","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1616092819594,"type":"Collection"},"header":{"backgroundImage":{"id":"1*-GYfQtC8YTx0Pc5ZHP15Pw.png","originalWidth":3000,"originalHeight":1500,"focusPercentX":45.357142857142854,"focusPercentY":13.571428571428571},"logoImage":{"id":"1*Pu1GkYWY2UKlPgXLDgbwIg@2x.png","originalWidth":625,"originalHeight":466,"alt":"Better Practices"},"alignment":2,"layout":6},"streamItems":[{"createdAt":1733301655727,"randomId":"36058c56c493","section":{"items":[{"post":{"postId":"8885a7601523"},"itemType":"post"},{"post":{"postId":"bace9cac42e1"},"itemType":"post"},{"post":{"postId":"a0c7dde28bd4"},"itemType":"post"},{"post":{"postId":"1e065fbbc29f"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"},{"createdAt":1733301655727,"randomId":"0967075a6bc0","section":{"items":[{"post":{"postId":"b32da63f4f94"},"itemType":"post"},{"post":{"postId":"1a8b08d79fca"},"itemType":"post"}],"layout":1,"heading":{"fallbackTitle":"Trending","headingBasic":{"title":"Trending"},"headingType":"headingBasic"}},"itemType":"section","type":"StreamItem"},{"createdAt":1733301655727,"randomId":"73403f5fe61b","section":{"items":[{"post":{"postId":"142aab534e6b"},"itemType":"post"},{"post":{"postId":"5011c9dfb0fa"},"itemType":"post"},{"post":{"postId":"99aba45a572b"},"itemType":"post"},{"post":{"postId":"c7b15c03f306"},"itemType":"post"},{"post":{"postId":"8476bd6fa51b"},"itemType":"post"},{"post":{"postId":"4acadab0f003"},"itemType":"post"},{"post":{"postId":"62ac3959de44"},"itemType":"post"},{"post":{"postId":"af904a74d32b"},"itemType":"post"},{"post":{"postId":"cdc7da7759ca"},"itemType":"post"},{"post":{"postId":"7f62d2276b62"},"itemType":"post"},{"post":{"postId":"d2269a025ae6"},"itemType":"post"},{"post":{"postId":"15c8807f6393"},"itemType":"post"},{"post":{"postId":"b6f302a67426"},"itemType":"post"},{"post":{"postId":"1ef992192f15"},"itemType":"post"},{"post":{"postId":"662707e0ef9e"},"itemType":"post"},{"post":{"postId":"6aec096dc9bf"},"itemType":"post"},{"post":{"postId":"aa026a3d682d"},"itemType":"post"},{"post":{"postId":"43d6128ff8d5"},"itemType":"post"},{"post":{"postId":"5d13eff44761"},"itemType":"post"},{"post":{"postId":"836826231280"},"itemType":"post"},{"post":{"postId":"e3f0bae48456"},"itemType":"post"},{"post":{"postId":"d87588ac874"},"itemType":"post"},{"post":{"postId":"df713eb9788c"},"itemType":"post"},{"post":{"postId":"d3ef238ec328"},"itemType":"post"},{"post":{"postId":"135c62bca7d7"},"itemType":"post"}],"layout":4,"heading":{"fallbackTitle":"Latest","headingBasic":{"title":"Latest"},"headingType":"headingBasic"}},"itemType":"section","type":"StreamItem"}]}) // ]]></script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8eca7e92d9ce8210',t:'MTczMzMwMTY1Ni4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>