CINXE.COM
Controlling how a proxy executes with flows | Apigee Edge
<!doctype html> <html lang="en" dir="ltr"> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://docs.apigee.com/api-platform/fundamentals/what-are-flows","20210802130438","https://web.archive.org/","web","/_static/", "1627909478"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta name="google-signin-client-id" content="157101835696-ooapojlodmuabs2do2vuhhnf90bccmoi.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email"> <meta property="og:site_name" content="Apigee Docs"> <meta property="og:type" content="website"><meta name="theme-color" content="#dd3303"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/web/20210802130438/https://docs.apigee.com/_pwa/apigee/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//web.archive.org/web/20210802130438/https://www.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210802130438/https://fonts.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210802130438/https://fonts.googleapis.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210802130438/https://apis.google.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210802130438/https://www.google-analytics.com/" crossorigin><link rel="stylesheet" href="//web.archive.org/web/20210802130438cs_/https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//web.archive.org/web/20210802130438cs_/https://fonts.googleapis.com/css?family=Material+Icons&display=block"><link rel="stylesheet" href="https://web.archive.org/web/20210802130438cs_/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/css/app.css"> <link rel="shortcut icon" href="https://web.archive.org/web/20210802130438im_/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/images/favicon.png"> <link rel="apple-touch-icon" href="https://web.archive.org/web/20210802130438im_/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/images/touchicon-180.png"><link rel="canonical" href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/what-are-flows"><link rel="search" type="application/opensearchdescription+xml" title="Apigee Docs" href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/s/opensearch.xml"> <title>Controlling how a proxy executes with flows | Apigee Edge</title> <meta property="og:title" content="Controlling how a proxy executes with flows | Apigee Edge"><meta property="og:url" content="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/what-are-flows"><meta property="og:locale" content="en"> </head> <body class="" template="page" theme="apigee-theme" type="article" layout="docs" pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"><devsite-header> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/web/20210802130438/https://docs.apigee.com/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="apigeeDocs" track-metadata-position="nav" track-metadata-eventdetail="nav"> <img src="https://web.archive.org/web/20210802130438im_/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/images/lockup.svg" class="devsite-site-logo" alt="Apigee Docs"> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list"> <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab active> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/get-started/get-started" class="gc-analytics-event " track-type="nav" track-name="apigee edge" track-metadata-eventdetail="https://docs.apigee.com/api-platform/get-started/get-started" track-metadata-position="nav - apigee edge" track-metadata-module="primary nav" aria-label="Apigee Edge, selected" data-category="Site-Wide Custom Events" data-label="Tab: Apigee Edge"> Apigee Edge </a> </tab> <tab dropdown> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/versions" class="gc-analytics-event " track-type="nav" track-name="private cloud" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/versions" track-metadata-position="nav - private cloud" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Private Cloud"> Private Cloud </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Private Cloud" track-type="nav" track-name="private cloud" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/versions" track-metadata-position="nav - private cloud" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Private Cloud" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Latest</li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.51.00/overview" track-type="nav" track-name="v4.51.00" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.51.00/overview" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.51.00 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.50.00" track-type="nav" track-name="v4.50.00" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.50.00" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.50.00 </div> </a> </li> </ul> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Deprecated/Unsupported</li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.19.06" track-type="nav" track-name="v4.19.06" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.19.06" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.19.06 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.19.01" track-type="nav" track-name="v4.19.01" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.19.01" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.19.01 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.18.05" track-type="nav" track-name="v4.18.05" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.18.05" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.18.05 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.18.01" track-type="nav" track-name="v4.18.01" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.18.01" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.18.01 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.17.09" track-type="nav" track-name="v4.17.09" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.17.09" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.17.09 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.17.05" track-type="nav" track-name="v4.17.05" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.17.05" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.17.05 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.17.01" track-type="nav" track-name="v4.17.01" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.17.01" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.17.01 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.16.09" track-type="nav" track-name="v4.16.09" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.16.09" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.16.09 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.16.05" track-type="nav" track-name="v4.16.05" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.16.05" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.16.05 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/private-cloud/v4.16.01" track-type="nav" track-name="v4.16.01" track-metadata-eventdetail="https://docs.apigee.com/private-cloud/v4.16.01" track-metadata-position="nav - private cloud" track-metadata-module="tertiary nav" track-metadata-module_headline="latest" tooltip> <div class="devsite-nav-item-title"> v4.16.01 </div> </a> </li> </ul> </div> </div> </div> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/hybrid/versions" class="gc-analytics-event " track-type="nav" track-name="hybrid" track-metadata-eventdetail="https://docs.apigee.com/hybrid/versions" track-metadata-position="nav - hybrid" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Hybrid"> Hybrid </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-monitoring" class="gc-analytics-event " track-type="nav" track-name="api monitoring" track-metadata-eventdetail="https://docs.apigee.com/api-monitoring" track-metadata-position="nav - api monitoring" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: API Monitoring"> API Monitoring </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/sense/what-apigee-sense" class="gc-analytics-event " track-type="nav" track-name="sense" track-metadata-eventdetail="https://docs.apigee.com/sense/what-apigee-sense" track-metadata-position="nav - sense" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Sense"> Sense </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://apidocs.apigee.com/" class="gc-analytics-event " track-type="nav" track-name="apis" track-metadata-eventdetail="https://apidocs.apigee.com" track-metadata-position="nav - apis" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: APIs"> APIs </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/troubleshoot/support" class="gc-analytics-event " track-type="nav" track-name="troubleshooting" track-metadata-eventdetail="https://docs.apigee.com/api-platform/troubleshoot/support" track-metadata-position="nav - troubleshooting" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Troubleshooting"> Troubleshooting </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/release/notes/apigee-release-notes" class="gc-analytics-event " track-type="nav" track-name="releases" track-metadata-eventdetail="https://docs.apigee.com/release/notes/apigee-release-notes" track-metadata-position="nav - releases" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Releases"> Releases </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://apigee.com/api-management/#/pricing" class="gc-analytics-event " track-type="nav" track-name="pricing" track-metadata-eventdetail="https://apigee.com/api-management/#/pricing" track-metadata-position="nav - pricing" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Pricing"> Pricing </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://community.apigee.com/" class="gc-analytics-event " track-type="nav" track-name="community" track-metadata-eventdetail="https://community.apigee.com/" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community"> Community </a> </tab> </nav> </devsite-tabs> </div> <devsite-search aria-expanded="false" aria-haspopup="listbox" enable-signin enable-search enable-suggestions enable-query-completion project-name="Apigee Edge" tenant-name="Apigee Docs" role="combobox"> <form class="devsite-search-form" action="https://web.archive.org/web/20210802130438/https://docs.apigee.com/s/results" method="GET"> <div class="devsite-search-container"> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-haspopup="false" aria-multiline="false" aria-label="Search box" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="searchbox" type="text" value=""> <div class="devsite-search-image material-icons" aria-hidden="true"></div> </div> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <devsite-select class="devsite-language-selector-menu"> <select aria-label="Select your language preference." class="devsite-language-selector-select" name="language" track-name="click" track-type="languageSelector"> <option>Language</option> <option value="en" lang="en" track-metadata-original-language="en" track-metadata-selected-language="en" track-name="changed" track-type="languageSelector"> English </option> <option value="ja" lang="ja" track-metadata-original-language="en" track-metadata-selected-language="ja" track-name="changed" track-type="languageSelector"> 日本語 </option> </select> </devsite-select> </devsite-language-selector> <devsite-user id="devsite-user"></devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-product-id-row"> <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list"> <li class="devsite-breadcrumb-item "> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/get-started/get-started" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail=""> Apigee Edge </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/get-started/get-started" class="gc-analytics-event " track-type="nav" track-name="get started" track-metadata-eventdetail="https://docs.apigee.com/api-platform/get-started/get-started" track-metadata-position="nav - get started" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Get started"> Get started </a> </tab> <tab active> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/get-started/learn-edge" class="gc-analytics-event " track-type="nav" track-name="develop" track-metadata-eventdetail="https://docs.apigee.com/api-platform/get-started/learn-edge" track-metadata-position="nav - develop" track-metadata-module="primary nav" aria-label="Develop, selected" data-category="Site-Wide Custom Events" data-label="Tab: Develop"> Develop </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/publish/publishing-overview" class="gc-analytics-event " track-type="nav" track-name="publish" track-metadata-eventdetail="https://docs.apigee.com/api-platform/publish/publishing-overview" track-metadata-position="nav - publish" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Publish"> Publish </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/analytics/analytics-services-overview" class="gc-analytics-event " track-type="nav" track-name="analyze" track-metadata-eventdetail="https://docs.apigee.com/api-platform/analytics/analytics-services-overview" track-metadata-position="nav - analyze" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Analyze"> Analyze </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/monetization/basics-monetization" class="gc-analytics-event " track-type="nav" track-name="monetize" track-metadata-eventdetail="https://docs.apigee.com/api-platform/monetization/basics-monetization" track-metadata-position="nav - monetize" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Monetize"> Monetize </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/system-administration/service-requests" class="gc-analytics-event " track-type="nav" track-name="administer" track-metadata-eventdetail="https://docs.apigee.com/api-platform/system-administration/service-requests" track-metadata-position="nav - administer" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Administer"> Administer </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/integrations/kubernetes/k8s-introduction" class="gc-analytics-event " track-type="nav" track-name="integrate" track-metadata-eventdetail="https://docs.apigee.com/api-platform/integrations/kubernetes/k8s-introduction" track-metadata-position="nav - integrate" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Integrate"> Integrate </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/reference/apigee-reference" class="gc-analytics-event " track-type="nav" track-name="reference" track-metadata-eventdetail="https://docs.apigee.com/api-platform/reference/apigee-reference" track-metadata-position="nav - reference" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Reference"> Reference </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/faq/edge-network-design-firewalls" class="gc-analytics-event " track-type="nav" track-name="faqs" track-metadata-eventdetail="https://docs.apigee.com/api-platform/faq/edge-network-design-firewalls" track-metadata-position="nav - faqs" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: FAQs"> FAQs </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/how-to-guides/how-to-guides-introduction" class="gc-analytics-event " track-type="nav" track-name="how-to guides" track-metadata-eventdetail="https://docs.apigee.com/how-to-guides/how-to-guides-introduction" track-metadata-position="nav - how-to guides" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: How-to guides"> How-to guides </a> </tab> <tab> <a href="https://web.archive.org/web/20210802130438/https://cloud.google.com/apigee/docs/support" class="gc-analytics-event " track-type="nav" track-name="support" track-metadata-eventdetail="https://cloud.google.com/apigee/docs/support" track-metadata-position="nav - support" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Support"> Support </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/web/20210802130438/https://docs.apigee.com/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="apigeeDocs" track-metadata-position="nav" track-metadata-eventdetail="nav"> <img src="https://web.archive.org/web/20210802130438im_/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/images/lockup.svg" class="devsite-site-logo" alt="Apigee Docs"> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list"> <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-platform/get-started/get-started" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Apigee Edge" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="apigeeEdge"> <span class="devsite-nav-text" tooltip> Apigee Edge </span> </a> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-platform/get-started/get-started" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Get started" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="getStarted"> <span class="devsite-nav-text" tooltip> Get started </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-platform/get-started/learn-edge" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Develop" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="develop"> <span class="devsite-nav-text" tooltip menu="_book"> Develop </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-platform/publish/publishing-overview" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Publish" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="publish"> <span class="devsite-nav-text" tooltip> Publish </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-platform/analytics/analytics-services-overview" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Analyze" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="analyze"> <span class="devsite-nav-text" tooltip> Analyze </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-platform/monetization/basics-monetization" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Monetize" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="monetize"> <span class="devsite-nav-text" tooltip> Monetize </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-platform/system-administration/service-requests" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Administer" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="administer"> <span class="devsite-nav-text" tooltip> Administer </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-platform/integrations/kubernetes/k8s-introduction" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Integrate" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="integrate"> <span class="devsite-nav-text" tooltip> Integrate </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/apigee-reference" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Reference" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="reference"> <span class="devsite-nav-text" tooltip> Reference </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-platform/faq/edge-network-design-firewalls" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: FAQs" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="faqs"> <span class="devsite-nav-text" tooltip> FAQs </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/how-to-guides/how-to-guides-introduction" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: How-to guides" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="howToGuides"> <span class="devsite-nav-text" tooltip> How-to guides </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://cloud.google.com/apigee/docs/support" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Support" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="support"> <span class="devsite-nav-text" tooltip> Support </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/versions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Private Cloud" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="privateCloud"> <span class="devsite-nav-text" tooltip> Private Cloud </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Private Cloud"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Private Cloud"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/hybrid/versions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Hybrid" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="hybrid"> <span class="devsite-nav-text" tooltip> Hybrid </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-monitoring" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: API Monitoring" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="apiMonitoring"> <span class="devsite-nav-text" tooltip> API Monitoring </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/sense/what-apigee-sense" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Sense" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="sense"> <span class="devsite-nav-text" tooltip> Sense </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://apidocs.apigee.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: APIs" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="apis"> <span class="devsite-nav-text" tooltip> APIs </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/api-platform/troubleshoot/support" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Troubleshooting" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="troubleshooting"> <span class="devsite-nav-text" tooltip> Troubleshooting </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/release/notes/apigee-release-notes" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Releases" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="releases"> <span class="devsite-nav-text" tooltip> Releases </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://apigee.com/api-management/#/pricing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Pricing" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="pricing"> <span class="devsite-nav-text" tooltip> Pricing </span> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210802130438/https://community.apigee.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="community"> <span class="devsite-nav-text" tooltip> Community </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom" role="navigation"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Developer resources</span></div></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/get-started/learn-edge" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Learn Edge</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Samples</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/samples/using-samples" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the sample API proxies</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/samples/samples-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Samples list</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>API proxy cookbook</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/samples/cookbook/api-proxy-cookbook-patterns" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cookbook patterns</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/samples/cookbook/using-policy-composition" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use policy composition</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/samples/cookbook/programming-api-proxies-javascript" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Program API proxies with JavaScript</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/samples/cookbook/how-create-java-callout" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>How to create a Java callout</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/samples/cookbook/how-handle-java-callout-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>How to handle Java Callout errors</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/samples/cookbook/how-use-properties-java-callout" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>How to use properties in a Java callout</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/samples/cookbook/use-java-customize-api" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Another Java callout sample</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/samples/mock-target-api" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Mock Target API</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/apigee-edge-command-line-tools" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Command-line tools</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/migrating-data-apigee-trial-org" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Migrating data from an Apigee Evaluation org</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Build proxies</span></div></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Fundamentals</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/apigee-edge-organization-structure" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand organizations</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/understanding-apis-and-api-proxies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand APIs and API proxies</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/download-api-proxies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Download API proxies</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/build-simple-api-proxy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Build a simple API proxy</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/best-practices-api-proxy-design-and-development" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Best practices</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Define the URL that clients see</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/understanding-routes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand routes</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>About virtual hosts</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/virtual-hosts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/faq-configuring-virtual-hosts-edge-cloud" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configuring Virtual Hosts FAQ</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/configuring-virtual-hosts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configuring virtual hosts</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/configuring-virtual-hosts-cloud" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configuring virtual hosts for the Cloud</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/configuring-virtual-hosts-private-cloud" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configuring virtual hosts for the Private Cloud</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/virtual-host-property-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Virtual host property reference</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Flows and flow variables</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/what-are-flows" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Control proxies with flows</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/flow-configurations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure flows</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Flow variables</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/introduction-flow-variables" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/understanding-handling-request-response-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>request and response flow variables</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/message-variables" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>message flow variable</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/flow-variables-and-conditions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Conditions with flow variables</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Handle faults</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/fault-handling" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/what-you-need-know-about-policy-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>About policy errors</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Reusable shared flows</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/shared-flows" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/flow-hooks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Attach a shared flow using a flow hook</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/connecting-proxies-other-proxies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Chain API proxies together</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Add features to a proxy</span></div></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>What's a policy?</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/policy-attachment-and-enforcement" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/attaching-and-configuring-policies-management-ui" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Attach and configure policies in the UI</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/attaching-and-configuring-policies-xml-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Attach and configure policies in XML files</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/attaching-policy-proxyendpoint-or-targetendpoint-flow" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Attach a policy to a ProxyEndpoint or TargetEndpoint Flow</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/resource-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage resources</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Secure a proxy</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/api-security" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Tutorials</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/tutorials/secure-calls-your-api-through-api-key-validation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Secure an API proxy with API keys</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/tutorials/secure-calls-your-api-through-oauth-20-client-credentials" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Secure an API with OAuth</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>OAuth2</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/oauth-home" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/oauth-introduction" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/oauth2-videos" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Videos</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/oauth-20-client-credentials-grant-type" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Client credentials grant type</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/oauth-v2-policy-authorization-code-grant-type" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Auth code grant type</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/implementing-password-grant-type" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Password grant type</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/understanding-default-oauth-20-configuration" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure a new API proxy</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/registering-client-apps" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Register client apps</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/obtaining-developer-keys" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Obtain client credentials</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/configuring-oauth-endpoints-and-policies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand OAuth endpoints</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/access-tokens" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Request tokens and codes</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/customizing-access-tokens" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize tokens and codes</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/validating-and-invalidating-access-tokens" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Revoke and approve tokens</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/enable-retrieval-and-revocation-oauth-20-access-tokens-end-user-id-app-id-or-both" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Revoke tokens by end user ID and app ID</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/revoking-and-approving-consumer-ids" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Revoke and approve consumer keys</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/sending-access-token" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send an access token</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/using-access-tokens" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Verify access tokens</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/working-scopes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Work with OAuth2 scopes</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/use-third-party-oauth-system" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use third-party OAuth tokens</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/hashing-tokens" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Hash tokens for extra security</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/oauth/advanced-oauth-20-topics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Advanced topics</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/policies/oauthv2-policy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>OAuthV2 policy</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/policies/get-oauth-v2-info-policy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>GetOAuthV2Info policy</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/policies/set-oauth-v2-info-policy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>SetOAuthV2Info policy</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>API keys</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/api-keys" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/setting-api-key-validation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up API key validation</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/policies/oauth-10-policy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>OAuth 1.0a</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/saml" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use SAML policies in an API proxy</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/content-based-security" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Content-based security</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/data-masking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Masking and hiding data</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/security/last-mile-security" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Last-mile security</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Limit request traffic</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/rate-limiting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Rate-limiting</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/comparing-quota-spike-arrest-and-concurrent-rate-limit-policies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Compare rate-limiting policies</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Caching and persistence</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/cache/caching-edge" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/cache/cache-videos" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Videos</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/cache/persistence-tools" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Persistence tools</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/cache/optimize-performance-using-cache" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Example: General purpose caching</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/cache/http-response-caching" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Support for HTTP response headers</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/cache/manage-caches-environment" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create and edit an environment cache</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/cache/key-value-maps" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Work with key value maps</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/cache/creating-and-editing-environment-keyvalue-maps" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create and edit environment key value maps</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/cache/cache-internals" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cache internals</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/shaping-and-converting-messages" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Shape, access, and convert messages</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/incorporating-procedural-code-api-proxy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Incorporate procedural code</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Integrate external resources with extensions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/extensions/extensions-overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>What are extensions?</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Tutorial: Using extensions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/tutorials/add-extension/intro" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/tutorials/add-extension/add-new-extension" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Step 1: Add an extension</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/tutorials/add-extension/configure-for-testing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Step 2: Configure and deploy</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/tutorials/add-extension/extension-callout-policy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Step 3: Add an ExtensionCallout policy</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/tutorials/add-extension/proxy-deployment" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Step 4: Deploy your proxy</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/tutorials/add-extension/xtra-credit" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Step 5: Log a message flow variable</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/extensions/configuring-an-extension" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Adding and configuring an extension</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/extensions/debugging-an-extension" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Debugging an extension</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/extensions/viewing-extension-logs" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Viewing extension logs</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/adding-cors-support-api-proxy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add CORS support</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Expose a SOAP service as an API proxy</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/exposing-soap-service-api-proxy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/tutorials/proxy-soap-service" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Proxy a SOAP service</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/enabling-streaming" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Stream requests and responses</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Deploy API proxies</span></div></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/deploy/understanding-deployment" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>About deployment</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/deploy/deploying-proxies-ui" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Deploy proxies in the UI</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/deploy/deploying-proxies-command-line" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Deploy proxies from the command line</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/deploy/deploy-api-proxies-using-management-api" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Deploy proxies using the management API</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/deploy/load-balancing-across-backend-servers" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Load balancing across backend servers</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Deploy Node.js services</span></div></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/node-overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview of Node.js on Apigee Edge</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Hosted Targets</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/hosted-targets/hosted-targets-overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/hosted-targets/hosted-targets-tutorials" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Tutorials</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/hosted-targets/hosted-targets-tasks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Tasks</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/hosted-targets/hosted-targets-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/hosted-targets/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/hosted-targets/hosted-targets-faq" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>FAQ</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Traditional (Retired)</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/overview-nodejs-apigee-edge" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/getting-started-nodejs-apigee-edge" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started with Node.js on Apigee Edge</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/deploying-standalone-nodejs-app" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Deploy a standalone Node.js app</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/adding-nodejs-existing-api-proxy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add Node.js to an existing API proxy</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/debugging-nodejs-proxies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Debug and troubleshooting Node.js proxies</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/understanding-edge-support-nodejs-modules" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>About Edge support for Node.js modules</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Use apigee-access (Retired)</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/using-apigee-access" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/access-flow-variables-nodejs" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Access flow variables</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/access-cache-nodejs" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Access the cache</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/accessing-quota-service-nodejs" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Access the quota service</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/accessing-key-value-maps-nodejs" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Access key value maps in Node.js</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/nodejs/using-secure-store" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Using the secure store (vaults)</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Debug</span></div></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/debug/using-trace-tool-0" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Trace tool</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/debug/using-offline-trace-tool" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Offline Trace tool</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/analytics/using-performance-metrics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use performance metrics</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/debug/view-api-history" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Audits: API, Product, & org history</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Envoy Adapter</span></div></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>v2.0.x</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v2.0.x/concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Concepts</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v2.0.x/getting-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Getting started</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v2.0.x/example-edge" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Apigee Edge example</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v2.0.x/operation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operation</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v2.0.x/reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v2.0.x/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>v1.4.x</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.4.x/concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Concepts</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.4.x/getting-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Getting started</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.4.x/example-edge" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Apigee Edge example</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.4.x/operation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operation</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.4.x/reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.4.x/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>v1.3.x</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.3.x/concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Concepts</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.3.x/getting-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Getting started</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.3.x/example-edge" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Apigee Edge example</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.3.x/operation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operation</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.3.x/reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.3.x/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>v1.2.x</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.2.x/concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Concepts</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.2.x/getting-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Getting started</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.2.x/example-edge" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Apigee Edge example</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.2.x/operation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operation</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.2.x/reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.2.x/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>v1.1.x</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.1.x/concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Concepts</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.1.x/getting-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Getting started</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.1.x/example-edge" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Apigee Edge example</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.1.x/operation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operation</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.1.x/reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.1.x/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>v1.0.x</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.0.x/concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Concepts</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.0.x/getting-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Getting started</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.0.x/example-edge" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Apigee Edge example</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.0.x/operation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operation</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.0.x/reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/envoy-adapter/v1.0.x/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/release/notes/apigee-adapter-for-envoy-release-notes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Release notes</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Microgateway</span></div></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/edge-microgateway-home" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Edge Microgateway home</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/edge-microgateway-videos" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Videos</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Version 3.2.x</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.2.x/overview-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.2.x/installing-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Installing</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.2.x/setting-and-configuring-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Getting started</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.2.x/operation-and-configuration-reference-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operating</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.2.x/cli-reference-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Command line reference</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.2.x/use-plugins" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Using plugins</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.2.x/develop-custom-plugins" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Developing custom plugins</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/integrations/kubernetes/k8s-introduction" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Running in Kubernetes</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.2.x/docker" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Running in a Docker container</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/istio-adapter/concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Using the Istio adapter</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Version 3.1.5 and later</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.5/overview-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.5/installing-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Installing</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.5/setting-and-configuring-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Getting started</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.5/operation-and-configuration-reference-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operating</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.5/cli-reference-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Command line reference</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.5/use-plugins" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Using plugins</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.5/develop-custom-plugins" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Developing custom plugins</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/integrations/kubernetes/k8s-introduction" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Running in Kubernetes</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.5/docker" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Running in a Docker container</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/istio-adapter/concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Using the Istio adapter</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Version 3.1.0 - 3.1.4</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.x/overview-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.x/installing-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Installing</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.x/setting-and-configuring-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Getting started</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.x/operation-and-configuration-reference-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operating</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.x/cli-reference-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Command line reference</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.x/use-plugins" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Using plugins</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.x/develop-custom-plugins" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Developing custom plugins</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/integrations/kubernetes/k8s-introduction" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Running in Kubernetes</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.1.x/docker" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Running in a Docker container</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/istio-adapter/concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Using the Istio adapter</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Version 3.0.x</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.0.x/overview-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.0.x/installing-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Installing</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.0.x/setting-and-configuring-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Getting started</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.0.x/operation-and-configuration-reference-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operating</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.0.x/cli-reference-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Command line reference</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/integrations/kubernetes/k8s-introduction" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Running in Kubernetes</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.0.x/docker" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Running in a Docker container</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/istio-adapter/concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Using the Istio adapter</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.0.x/use-plugins" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Using plugins</span></a></li><li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/3.0.x/develop-custom-plugins" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Developing custom plugins</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Version 2.5.x (Unsupported)</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/2.5.x/overview-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/2.5.x/installing-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Installing</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/2.5.x/setting-and-configuring-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Getting started</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/2.5.x/operation-and-configuration-reference-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operating</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/2.5.x/cli-reference-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Command line reference</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/integrations/kubernetes/k8s-introduction" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Running in Kubernetes</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/2.5.x/docker" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Running in a Docker container</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/istio-adapter/concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Using the Istio adapter</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/2.5.x/use-plugins" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Using plugins</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/2.5.x/develop-custom-plugins" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Developing custom plugins</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/microgateway/error-code-reference-edge-microgateway" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Error reference</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/api-platform/faq/edge-microgateway-faq" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>FAQ</span></a></li> <li class="devsite-nav-item"><a href="/web/20210802130438/https://docs.apigee.com/release/notes/edge-microgateway-release-notes-0" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Release notes</span></a></li> </ul> <ul class="devsite-nav-list" menu="Private Cloud" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip> Latest </span> </span> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.51.00/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.51.00" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.51.00"> <span class="devsite-nav-text" tooltip> v4.51.00 </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.50.00" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.50.00" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.50.00"> <span class="devsite-nav-text" tooltip> v4.50.00 </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip> Deprecated/Unsupported </span> </span> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.19.06" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.19.06" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.19.06"> <span class="devsite-nav-text" tooltip> v4.19.06 </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.19.01" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.19.01" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.19.01"> <span class="devsite-nav-text" tooltip> v4.19.01 </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.18.05" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.18.05" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.18.05"> <span class="devsite-nav-text" tooltip> v4.18.05 </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.18.01" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.18.01" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.18.01"> <span class="devsite-nav-text" tooltip> v4.18.01 </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.17.09" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.17.09" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.17.09"> <span class="devsite-nav-text" tooltip> v4.17.09 </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.17.05" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.17.05" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.17.05"> <span class="devsite-nav-text" tooltip> v4.17.05 </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.17.01" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.17.01" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.17.01"> <span class="devsite-nav-text" tooltip> v4.17.01 </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.16.09" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.16.09" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.16.09"> <span class="devsite-nav-text" tooltip> v4.16.09 </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.16.05" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.16.05" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.16.05"> <span class="devsite-nav-text" tooltip> v4.16.05 </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210802130438/https://docs.apigee.com/private-cloud/v4.16.01" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: v4.16.01" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="v4.16.01"> <span class="devsite-nav-text" tooltip> v4.16.01 </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav has-toc> <devsite-toc class="devsite-nav" role="navigation" aria-label="Table of contents"></devsite-toc> <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /css/custom.css */ p.hybrid, li.hybrid { border-style: none none none solid; border-color: #ffab40; padding-left: 10px; padding-top: 5px; padding-bottom: 5px; background-color: #f8e6cb; } </style> <div class="devsite-banner devsite-banner-announcement"> <div class="devsite-banner-message"> <div class="devsite-banner-message-text"> <style> .devsite-banner-announcement:not(.devsite-banner-tenant) { background: #202124; color: white; font-weight: 500; } .devsite-banner-announcement a { color: white; font-weight: 700; } .devsite-banner-announcement a:link, .devsite-banner-announcement a:visited { background: 0; } .devsite-banner-announcement a:hover, .devsite-banner-announcement a:focus { text-decoration: none; } .devsite-banner-announcement .devsite-banner-message-text { margin: 0 auto; } </style> Google is committed to advancing racial equity for Black communities. <a href="https://web.archive.org/web/20210802130438/https://google.com/racialequity" class="gc-analytics-event" data-category="Announcement" data-label="Racial Equity">See how.</a> </div> </div> </div> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Apigee Edge"> Apigee Edge </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://web.archive.org/web/20210802130438/https://docs.apigee.com/api-platform/get-started/learn-edge" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail=""> Develop </a> </li> </ul> <devsite-thumb-rating position="header"> <template class="thumb-down-categories"> [{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }] </template> <template class="thumb-up-categories"> [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }] </template> <template class="thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Apigee Edge" product-id="1636213" bucket="docsite" context="" version="t-devsite-webserver-20210727-r01-rc00.436905324767055248" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" project-icon="https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/images/touchicon-180.png" feedback-type="thumb-rating"> <button> Need to tell us more? </button> </devsite-feedback> </template> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Apigee Edge" product-id="1636213" bucket="docsite" context="" version="t-devsite-webserver-20210727-r01-rc00.436905324767055248" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" project-icon="https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/images/touchicon-180.png" feedback-type="thumb-rating"> <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title">Controlling how a proxy executes with flows</h1> <devsite-toc class="devsite-nav" devsite-toc-embedded> </devsite-toc> <div class="devsite-article-body clearfix "> <p style="text-align: right;"><span style="background-color: #F0F0F0; font-size:10pt"><em> You're viewing Apigee Edge documentation.<br/>View <a href="https://web.archive.org/web/20210802130438/https://cloud.google.com/apigee/docs/" target="_blank">Apigee X documentation</a>.</em></span></p> <p>Any application programming model includes a way to control the flow of processing. In an API proxy, that's done with flows. To flows you add logic, condition statements, error handling, and so on. You use flows to control what happens, and when.</p> <p>Flows are sequential stages along the API request processing path. When you add proxy logic, such as to verify an API key, you add the logic as a step in the sequence specified by a flow. When you define a condition to specify whether and when logic executes, you add the condition to a flow.</p> <p>The following flow configuration example defines a flow in which the VerifyAPIKey policy executes <em>if</em> the incoming request path ends with <code translate="no" dir="ltr">/</code> and the request's HTTP verb is GET.</p> <pre class="prettyprint" translate="no" dir="ltr"> <Flow name="Get Food Carts"> <Description>Get Food Carts</Description> <Request> <Step> <Name>Verify-API-Key</Name> </Step> </Request> <Condition>(proxy.pathsuffix MatchesPath "/") and (request.verb = "GET")</Condition> </Flow> </pre> <p>The <code translate="no" dir="ltr">Verify-API-Key</code> value in the flow's <code translate="no" dir="ltr"><Name></code> element serves to include a policy configured elsewhere in the proxy with XML such as the following:</p> <pre class="prettyprint" translate="no" dir="ltr"> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key"> <DisplayName>Verify API Key</DisplayName> <Properties/> <APIKey ref="request.header.x-api-key"/> </VerifyAPIKey> </pre> <h2 id="designingflowexecutionsequence" data-text="Designing flow execution sequence">Designing flow execution sequence</h2> <p>You structure flows so that you can have logic execute in the right sequence along the processing path.</p> <aside class="note"><b>Note:</b> See <a href="/web/20210802130438/https://docs.apigee.com/api-platform/get-started/get-started">Build your first API proxy</a> for a simple tutorial on creating a flow. For specifics on configuring flows, see <a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/flow-configurations">Configuring flows</a>.</aside> <p>When deciding where to add logic, you'll first choose whether to add it to a proxy endpoint or target endpoint. An API proxy divides its code between code that interacts with the proxy's client (proxy endpoint) and optional code that interacts with the proxy's backend target, if any (target endpoint).</p> <p>Both endpoints contain flows, as described here:</p> <table> <thead> <tr> <th>Endpoint type</th> <th>Description</th> <th>Flows supported</th> </tr> </thead> <tbody> <tr> <td>ProxyEndpoint</td> <td>Contains the API proxy flows closest to the client. Provides places for logic to act first on the request from the client, then last on the response to the client.</td> <td>PreFlow, conditional flows, PostFlow, PostClientFlow</td> </tr> <tr> <td>TargetEndpoint</td> <td>Contains the API proxy flows closest to the backend resource. Provides places for logic to prepare a request for, then handle the response from, a backend resource. </td> <td>PreFlow, conditional flows, PostFlow</td> </tr> </tbody> </table> <p>You configure flow with XML that specifies what should happen and in what order. The following illustration shows how flows are ordered sequentially within a proxy endpoint and target endpoint:</p> <p><img alt="Request from HTTP client passing through Proxy Endpoint to the Target Endpoint on the backend to reach the HTTP service. Each request and response panel shows the preflow, conditional flows, and post flow. In addition, examples of the proxy endpoint and target endpoint are provided." src="/web/20210802130438im_/https://docs.apigee.com/api-platform/images/ProxyToBackendWithFlows_v3.png"></p> <p>The proxy endpoint and target endpoint each contain flows that you can arrange in the following sequence:</p> <table> <thead> <tr> <th>Position</th> <th>Flow type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>PreFlow</td> <td> <p>Useful when you need to make sure that certain code executes before anything else happens.</p> <p>If the PreFlow is in a target endpoint, it executes after the proxy endpoint's PostFlow.</p> </td> </tr> <tr> <td>2</td> <td>Conditional Flow</td> <td> <p>The place for conditional logic. Executes after the PreFlow and before the PostFlow.</p> <div> Only one conditional flow is executed per segment--the first flow whose condition evaluates to true. That means you can have one conditional flow executed as part of each of the: </div> <ul> <li>ProxyEndpoint's request pipeline</li> <li>TargetEndpoint's request pipeline</li> <li>ProxyEndpoint's response pipeline</li> <li>TargetEndpoint's response pipeline</li> </ul> </td> </tr> <tr> <td>3</td> <td>PostFlow</td> <td> <p>A good place to need to log data, send a notification that something happened while processing the request, and so on. Executes after conditional flows and PreFlow.</p> <p>If the PostFlow is in a proxy endpoint, and there's a target endpoint, the proxy endpoint PostFlow executes before the target endpoint PreFlow.</p> </td> </tr> <tr> <td>4</td> <td>PostClientFlow (proxy flow only)</td> <td>A flow for logging messages after a response is returned to the client.</td> </tr> </tbody> </table> <h3 id="designingflowexecutionsequence-havingcodeexecutefirstwithapreflow" data-text="Having code execute first with a PreFlow">Having code execute first with a PreFlow</h3> <p>A PreFlow is useful when you need to make sure that certain code executes before anything else happens.</p> <p>In a proxy endpoint, a PreFlow is a great place for code that authenticates a client and limits traffic from clients. In a target endpoint, where it begins preparing to send a request to a backend target, a PreFlow is good for first steps in preparing to send the request.</p> <p>For example, you usually don't want to service a client that has exceeded its quota. To support these requirements, you put security and quota policies in the PreFlow segment. That way, you don't need to worry about a condition failing to evaluate in a later conditional flow. The policies in this flow will always execute before any other processing takes place.</p> <p>In the following example, SpikeArrest and Quota policies execute before processing passes to conditional flows.</p> <pre class="prettyprint" translate="no" dir="ltr"> <PreFlow name="MyPreFlow"> <Request> <Step> <Name>Spike-Arrest</Name> </Step> <Step> <Name>Quota</Name> </Step> </Request> <Response/> </PreFlow> </pre> <h3 id="designingflowexecutionsequence-havingcodeexecuteconditionallywithaconditionalflow" data-text="Having code execute conditionally with a conditional flow">Having code execute conditionally with a conditional flow</h3> <p>Between a PreFlow and a PostFlow, you can have flows that execute conditionally. This gives you an opportunity to configure multiple sequences of logic, but have only one execute based on your proxy's state. A conditional flow is optional if you can execute all logic in PreFlow or PostFlow and no conditions are required (in other words, only one path through the endpoint is supported).</p> <p>Each flow specifies a condition that tests for different state values. This effectively branches execution based on conditions. For example, you might want to convert XML to JSON only when the requesting app is running on a mobile device.</p> <aside class="note"><b>Note:</b> In a conditional flow, the condition is evaluated in both the request and response. You cannot have separate conditions for request and response. Only one conditional flow is executed--the first flow whose condition evaluates to true.</aside> <p>Here, quota constraints are enforced only if the request is a <code translate="no" dir="ltr">GET</code> request with a URI pattern of <code translate="no" dir="ltr">/issue/**</code> (/issue/ with anything in the URI after the last forward slash).</p> <pre class="prettyprint" translate="no" dir="ltr"> <Flow name="MyFlow"> <Description/> <Request> <Step> <Name>Quota</Name> </Step> </Request> <Response/> <strong><Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition></strong> </Flow> </pre> <p>You use flow variables to specify conditions. For more about using variables in conditions, see <a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/flow-variables-and-conditions">Conditions with flow variables</a>.</p> <p>For examples of using pattern matching in conditions, see <a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/flow-variables-and-conditions#patternmatching">Pattern matching</a>.</p> <h3 id="designingflowexecutionsequence-havingcodeexecuteaftercorelogicwithapostflow" data-text="Having code execute after core logic with a PostFlow">Having code execute after core logic with a PostFlow</h3> <p>A PostFlow is a great place to perform actions after your endpoint's core logic, and before endpoint processing finishes. A PostFlow executes after conditional flows and PreFlow.</p> <p>A PostFlow is a good place to log some data, send a notification that something happened, transform the response message format, and so on.</p> <p>In the following example, an AssignMessage policy called SetResponseHeaders sets headers of the response message before Apigee Edge sends the response back to the client.</p> <pre class="prettyprint" translate="no" dir="ltr"> <PostFlow> <Response> <Step> <Name>SetResponseHeaders</Name> </Step> </Response> </PostFlow> </pre> <h3 id="designingflowexecutionsequence-havingcodeexecuteaftertheclientreceivesyourproxysresponsewithapostclientflow" data-text=" Having code execute after the client receives your proxy's response with a PostClientFlow"> Having code execute after the client receives your proxy's response with a PostClientFlow</h3> <p>A PostClientFlow can include the following policies:</p> <ul> <li><a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/policies/extension-callout-policy">ExtensionCallout policy</a></li> <li><a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/policies/flow-callout-policy">FlowCallout policy</a><sup>*</sup></li> <li><a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/policies/message-logging-policy">MessageLogging policy</a></li> <li><a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/policies/service-callout-policy">ServiceCallout policy</a></li> </ul> <p><sup>*</sup> The FlowCallout policy can only call shared flows which themselves meet the criteria for being in the PostClientFlow (ie, only contain compatible policies).</p> <p>If you include one, a PostClientFlow would be the last flow to execute, executing after a response is sent to the client.</p> <aside class="note"><strong>Note: </strong>The <a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/policies/extension-callout-policy">ExtensionCallout policy</a> supports only the <a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/extensions/google-cloud-logging/google-cloud-logging-extension-changelog"> Google Cloud Logging Extension Version 1.3.7 and later</a> in the PostClientFlow. It does not support any other type of extension. </aside> <p>A PostClientFlow is good for final logging. Also, you can log the time interval between when the start and end timestamps for the response message. The <code translate="no" dir="ltr">client.sent.start.timestamp</code> and <code translate="no" dir="ltr">client.sent.end.timestamp</code> variable values aren't calculated until after the response is sent.</p> <p>Here's an example of a PostClientFlow with a MessageLogging policy attached.</p> <pre class="prettyprint" translate="no" dir="ltr"> ... <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <strong><PostClientFlow> <Request/> <Response> <Step> <Name>Message-Logging-1</Name> </Step> </Response> </PostClientFlow></strong> ... </pre> <div class="video"> <p><strong>Video:</strong> Check out this short video showing you how to create a PostClientFlow using the MessageLogging policy from the Four Minute Video For Developers (4MV4D) series.</p> <div style="text-align: left; margin:15px"> <iframe allowfullscreen="" frameborder="0" height="315" src="https://web.archive.org/web/20210802130438if_/https://www.youtube.com/embed/R2HO3XsC9ZU?list=PLIXjuPlujxxxe3iTmLtgfIBgpMo7iD7fk" width="560"></iframe> </div> </div> <p>For more information, see:</p> <ul> <li><a href="/web/20210802130438/https://docs.apigee.com/api-platform/reference/api-proxy-configuration-reference">API proxy configuration reference</a></li> <li><a href="https://web.archive.org/web/20210802130438/https://community.apigee.com/content/kbentry/18196/tutorial-apigee-edge-post-client-flow.html">Tutorial : Apigee Edge - Post Client Flow</a> community article</li> </ul> <h2 id="addinglogictoflows" data-text="Adding logic to flows">Adding logic to flows</h2> <p>When you add logic to your proxy, you do it by adding policies to your proxy's flows. Just as flows execute in a sequence (PreFlow then Flow then PostFlow, as described in this topic), the contents of a flow execute in a sequence.</p> <aside class="note"><b>Note:</b> For more about policies, including how to add them with the console and in code, see <a href="/web/20210802130438/https://docs.apigee.com/api-platform/develop/policy-attachment-and-enforcement">What's a policy?</a> For details about attaching policies to flows, see <a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/flow-configurations">Configuring flows</a>.</aside> <p>The following example flow configuration references three policies (configured elsewhere in their own XML files). The policy referenced by <code translate="no" dir="ltr">Verify-API-Key</code> executes before the policy referenced by <code translate="no" dir="ltr">Remove-API-Key</code>; both are followed by the policy represented by <code translate="no" dir="ltr">Quota</code>.</p> <pre class="prettyprint" translate="no" dir="ltr"> <Flow name="Get Food Cart Menus"> <Description>Get Food Cart Menus</Description> <Request> <Step> <Name>Verify-API-Key</Name> </Step> <Step> <Name>Remove-API-Key</Name> </Step> <Step> <Name>Quota</Name> </Step> </Request> <Condition>(proxy.pathsuffix MatchesPath "/") and (request.verb = "GET")</Condition> </Flow> </pre> <p>The Apigee Edge console presents this sequence of policies as a row of icons where each icon represents the policy.</p> <p><img alt="Apigee Edge console presents this sequence of policies as a row of icons where each icon represents the policy. Icons shown on the request path include: Verify API key, Remove API key, and Quota" src="/web/20210802130438im_/https://docs.apigee.com/api-platform/images/flow-policy-sequence.png"></p> <h2 id="debuggingflows" data-text="Debugging flows">Debugging flows</h2> <p>The Apigee Edge Trace tool provides a graphical way to see how the logic in your API proxy executes following a request. The tool illustrates processing between request and response. It doesn't specifically illustrate the separation between PreFlow, conditional flows, and PostFlow.</p> <p>For more about tracing proxies, see <a href="/web/20210802130438/https://docs.apigee.com/api-platform/debug/using-trace-tool-0">Using the Trace tool</a>.</p> <h2 id="handlingerrorsinflows" data-text="Handling errors in flows">Handling errors in flows</h2> <p>You can raise faults from various places in an API proxy, including from flows.</p> <p>The following example is the response stanza from a PreFlow in a target endpoint -- in other words, it's the code that executes immediately upon receiving the response from a backend target. In the example, a fault is raised if the response from the target isn't 200 (success).</p> <pre class="prettyprint" translate="no" dir="ltr"> <PreFlow name="PreFlow"> <Response> <Step> <Name>RaiseFault</Name> <Condition>(response.status.code GreaterThan "200")</Condition> </Step> </Response> </PreFlow> </pre> <p>For more about error handling, see <a href="/web/20210802130438/https://docs.apigee.com/api-platform/fundamentals/fault-handling">Handling faults</a>.</p> </div> <devsite-thumb-rating position="footer"> <template class="thumb-down-categories"> [{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }] </template> <template class="thumb-up-categories"> [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }] </template> <template class="thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Apigee Edge" product-id="1636213" bucket="docsite" context="" version="t-devsite-webserver-20210727-r01-rc00.436905324767055248" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" project-icon="https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/images/touchicon-180.png" feedback-type="thumb-rating"> <button> Need to tell us more? </button> </devsite-feedback> </template> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Apigee Edge" product-id="1636213" bucket="docsite" context="" version="t-devsite-webserver-20210727-r01-rc00.436905324767055248" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" project-icon="https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/images/touchicon-180.png" feedback-type="thumb-rating"> <button> Send feedback </button> </devsite-feedback> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://web.archive.org/web/20210802130438/https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://web.archive.org/web/20210802130438/https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://web.archive.org/web/20210802130438/https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2021-05-21 UTC.</p> </devsite-content-footer> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">About Apigee</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210802130438/https://apigee.com/about/apigee#block-bean-about-apigee-contact-us-header" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> We're part of Google </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210802130438/https://apigee.com/api-management/#/events" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Events </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210802130438/https://apigee.com/about/partners/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Partners </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210802130438/https://apigee.com/api-management/#/resources" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> eBooks and webcasts </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Community and support</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210802130438/https://community.apigee.com/index.html" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Community </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210802130438/https://support.apigee.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Support overview </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210802130438/https://status.apigee.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Status </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210802130438/https://apigee.com/about/support/portal/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Support portal </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Resources</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210802130438/https://apigee.com/api-management/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Developer overview </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210802130438/https://www.youtube.com/playlist?list=PLIXjuPlujxxxe3iTmLtgfIBgpMo7iD7fk" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> 4-minute videos for developers </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210802130438/https://apigee.com/about/blog/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Apigee blog </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://web.archive.org/web/20210802130438/https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <img class="devsite-footer-sites-logo" src="https://web.archive.org/web/20210802130438im_/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/images/lockup-developers.svg" loading="lazy" alt="Google Developers"> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20210802130438/https://developer.android.com/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link"> Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20210802130438/https://developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link"> Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20210802130438/https://firebase.google.com/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link"> Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20210802130438/https://cloud.google.com/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link"> Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20210802130438/https://developers.google.com/products/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link"> All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//web.archive.org/web/20210802130438/https://apigee.com/about/terms-use" data-category="Site-Wide Custom Events" data-label="Footer Terms link"> Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//web.archive.org/web/20210802130438/https://apigee.com/about/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link"> Privacy </a> </li> </ul> <devsite-language-selector> <devsite-select class="devsite-language-selector-menu"> <select aria-label="Select your language preference." class="devsite-language-selector-select" name="language" track-name="click" track-type="languageSelector"> <option>Language</option> <option value="en" lang="en" track-metadata-original-language="en" track-metadata-selected-language="en" track-name="changed" track-type="languageSelector"> English </option> <option value="ja" lang="ja" track-metadata-original-language="en" track-metadata-selected-language="ja" track-name="changed" track-type="languageSelector"> 日本語 </option> </select> </devsite-select> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics enable-analytics-iframe> <script type="application/json" analytics>[]</script> <script type="application/json" gtm>{"parameters": {"freeTrialEligibleUser": "False", "internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "Apigee Edge", "signedIn": "False", "tenant": "apigee", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}}, "tags": ["GTM-N52333"]}</script> </devsite-analytics> <script nonce="l1JkKLEUP/VizGWsoXcZIAY25/2jWX"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://web.archive.org/web/20210802130438/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/js/app_loader.js', '[10,"en",null,"/js/devsite_app_module.js","https://web.archive.org/web/20210802130438/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f","https://web.archive.org/web/20210802130438/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee","https://web.archive.org/web/20210802130438/https://apigee-dot-devsite-v2-prod-3p.appspot.com",null,null,["/_pwa/apigee/manifest.json","https://web.archive.org/web/20210802130438/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/images/video-placeholder.svg","https://web.archive.org/web/20210802130438/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/images/favicon.png","https://web.archive.org/web/20210802130438/https://www.gstatic.com/devrel-devsite/prod/v0492b3db79b8927fe2347ea2dc87c471b22f173331622ffd10334837d43ea37f/apigee/images/lockup.svg","https://web.archive.org/web/20210802130438/https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,40,50,63,70,75,76,80,87,88,91,92,93,97,98,100,101,102,103,104,105,107,108,111,112,113,115,116,117,118,120,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,138,147,148],"AIzaSyCNm9YxQumEXwGJgTDjxoxXK6m1F-9720Q","AIzaSyCc76DZePGtoyUjqKrLdsMGk_ry7sljLbY"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html><!-- FILE ARCHIVED ON 13:04:38 Aug 02, 2021 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 15:17:52 Nov 29, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.662 exclusion.robots: 0.033 exclusion.robots.policy: 0.019 esindex: 0.011 cdx.remote: 12.341 LoadShardBlock: 632.316 (3) PetaboxLoader3.datanode: 274.244 (4) PetaboxLoader3.resolve: 3605.865 (3) load_resource: 3402.632 -->