<!DOCTYPE html>
<html lang=en-US>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="google-site-verification" content="MOnPMZKo_gmKqZgcnzortlWhXu0qUWvmbNAeWx84v9I" />
  <link rel="apple-touch-icon-precomposed" href="../static/images/apple-touch-icon-precomposed.png">
    <title>Yahoo Developer Network</title>
    <meta name="description" content="Measure, monetize, advertise and improve your apps with Yahoo tools. Join the 200,000 developers using Yahoo tools to build their app businesses.">
    <meta property="og:title" content="Yahoo Developer Network" />
    <meta property="og:type" content='website' />
    <meta property="og:url" content="https://developer.yahoo.com/" />
    <meta property="og:description" content="Measure, monetize, advertise and improve your apps with Yahoo tools. Join the 200,000 developers using Yahoo tools to build their app businesses."/>
    <meta property="og:image" content="https://s.yimg.com/oo/cms/products/site/assets/ydn200.png"/>
    <meta property="og:site_name" content="Yahoo Developer Network" />

  <link rel="shortcut icon" href="https://s.yimg.com/rz/l/favicon.ico"/>

  <link rel="stylesheet" href="/static/css/font-awesome.min.css">
  <link rel="stylesheet" href="/static/css/denali-icons-v0.4.1.css">
  <link rel="stylesheet" href="/static/css/hoverbox.css">

  <!--[if lte IE 8]>
  <link rel="stylesheet" href="/static/css/codemirror.css">
<link rel="stylesheet" href="/static/css/pure.css">
<link rel="stylesheet" href="/static/css/main.css">
<link rel="stylesheet" href="/static/css/side-menu.css">
<link rel="stylesheet" href="/static/css/featherlight.min.css">
<link rel="stylesheet" href="/static/css/denali-style.css">
<link rel="stylesheet" href="/static/css/less-styles.css">
  <![endif]-->
  <!--[if gt IE 8]><!-->
  <link rel="stylesheet" href="https://s.yimg.com/zz/combo?oo/fe/css/codemirror-min_681d3e3e0.css&oo/fe/css/pure-min_662621f08.css&oo/fe/css/main-min_fd2b1565a.css&oo/fe/css/side-menu-min_d1ff8ca9b.css&oo/fe/css/featherlight.min_2802ef65c.css&oo/fe/css/denali-style-min_e0ef5615c.css&oo/fe/css/less-styles-min_1527735e8.css">
  <!--<![endif]-->

  <script src="https://s.yimg.com/zz/combo?oo/fe/js/vendor/jquery331_min-min_fb71483ea.js&oo/fe/js/vendor/jquery-easytabs_min-min_5ed1e3e24.js&oo/fe/js/vendor/jquery-hashchange-min_acc519bb2.js&oo/fe/js/vendor/js-cookie-min_bff73c132.js"></script>
<script src="/static/js/vendor/jquery.cookie.js"></script>
<script src="https://s.yimg.com/zz/combo?oo/fe/js/vendor/featherlight_min-min_8697a441b.js&oo/fe/js/vendor/slick_min-min_0d13b88ac.js&oo/fe/js/vendor/scrollReveal_min-min_118b7ecf1.js&oo/fe/js/vendor/codemirror-compressed-min_3217a68df.js"></script>

  <script src="/static/js/vendor/bootstrap.bundle.min.js"></script>
  <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-86392702-1', 'auto');
      ga('require', 'outboundLinkTracker');
      ga('send', 'pageview');

  </script>
  <script src="/static/js/autotrack.js"></script>
</head>

<body class=""><header role="banner" class="eolBanner"><span>As of Monday, March 1, 2021, the free Yahoo Weather API will be retired.</span></header>

  <!-- Check if there is custom header data -->
    <div class="header-container">
    <div class="page-head-search container">
      <a href="/" aria-label="YDN Logo"><div class="logo-container"></div><div class="devtxt">developer</div></a>
      <div class="header-links">
        <ul>
          <li>
            <a id="nav-opensource" href="/opensource/"><span>Open Source</span></a>
          </li>
            <li>
                <a id="nav-api"  href="/api/"><span>APIs</span></a>
            </li>
          <li>
            <a id="nav-advertising"  href="/advertising/" target="_blank" rel="noopener"><span>Advertising</span>
            <span><i class="d-icon d-external is-small" aria-hidden="true"></i></span></a>
          </li>
          <li>
            <a id="nav-blogs"  href="/blogs/"><span>Blogs</span></a>
          </li>
            <li>
                <a id="nav-events"  href="/events/"><span>Events</span></a>
            </li>
           <li>
            <a id="nav-podcasts"  href="/podcasts/"><span>Podcasts</span></a>
          </li>
          <li>
            <a id="nav-apps"  href="/apps/"><span>Apps</span></a>
          </li>
       </ul>
     </div>
      <div class="head-controls hidden">
        <form id="search-form" action="/find/" method="GET" autocomplete="off">
          <label for="search-input" class="sr-only">Input to search</label>
          <input title="" id="search-input" name="q" placeholder="">
          <button type="submit" class="pure-button search-ydn" aria-label="search button"><i class="d-icon d-search is-smal" aria-hidden="true"></i></button>
        </form>
      </div>
    
      <div class="head-right-controls">
    
        <div class="header-search-container" id="search-nav-bar">
        <form action="/find/" method="GET" autocomplete="off" class="search-form">
         <input title="search" aria-label="search scope" id="scope-search" name="q" placeholder="Search"  >
    
            <button type="submit" class="search-ydn" aria-label="search button"><i class="d-icon d-search is-small" aria-hidden="true"></i></button>
         </form>
       </div>
        <!-- <a id="myapps-dropdown" class="hidden">
          <img src="/assets/images/app-icon.png" alt="App Icons" class="header-icon">
        </a> -->
        <a id="language-dropdown" aria-label="Language Dropdown"><span class="flag-icon flag-icon-us" aria-hidden="true"></span> <span class="caret" aria-hidden="true"></span></a>
        <a id="dialpad-dropdown" aria-label="Products Dialpad Dropdown"><span class="d-icon d-menu-dialpad" aria-hidden="true"></span></a>
        
            <div class="user-account">
              <!-- <img class="pic-id my-id hidden" src="https://s.yimg.com/dh/ap/social/profile/profile_b64.png"> -->
    
              <a href="https://login.yahoo.com?done=https://developer.yahoo.com/&src=devnet&specId=usernameReg">Sign In</a>
              <!-- <a href="https://login.yahoo.com/config/login?.done=https://developer.yahoo.com/" class="login"><i class="d-icon d-user-profile-circle is-medium pic-id my-id hover"></i></a> -->
    
            </div>
      </div>
    
      <div id="language-overlay" class="overlay"  sign-in ">
        <div class="pointer"></div>
        <ul>
          <li><a class='rapidnofollow' data-lang="en-US" href="#" aria-label="Translate to English"><span class="flag-icon flag-icon-us" aria-hidden="true"></span> English (U.S.)</a></li>
          <li><a class='rapidnofollow' data-lang="zh-Hant-HK" href="#" aria-label="Translate to Chinese (Hong Kong)"><span class="flag-icon flag-icon-hk" aria-hidden="true"></span> 中文(香港)</a></li> 
          <li><a class='rapidnofollow' data-lang="zh-Hant-TW" href="#" aria-label="Translate to Chinese (Taiwan)"><span class="flag-icon flag-icon-tw" aria-hidden="true"></span> 中文(台灣)</a></li> 
        </ul>
      </div>
    
      <div id="dialpad-overlay" class="overlay">
        <div class="pointer"></div>
        <div class="dialpad-content">
            <ul>
                <li>
                    <a class="is-block" href="https://developer.verizonmedia.com" target="_blank" rel="noopener"
                       role="menuitem"
                       tabindex="-1">
                <span class="is-block">
                <img class="nav-brand" src="/static/images/vzm_favicon.png" alt="Verizon Media logo">
                </span>
                        <span class="is-inline-block">Verizon Media Developer</span>
                    </a>
                </li>
                <li>
                    <a class="is-block"
                       href="https://help.verizonmedia.com/platform/Home.htm"
                       target="_blank" rel="noopener" role="menuitem" tabindex="-1">
                <span class="is-block">
                <img class="nav-brand" src="/static/images/vzm_favicon.png" alt="Ad Platform Help Center">
                </span>
                        <span class="is-inline-block">Ad Platform Help Center</span>
                    </a>
                </li>
            </ul>
            <ul>
                <li>
                    <a class="is-block"
                       href="https://help.verizonmedia.com/platform/Analytics-Reports/Analytics-Reports-Overview.htm"
                       target="_blank" rel="noopener" role="menuitem" tabindex="-1">
                <span class="is-block">
                <img class="nav-brand" src="/static/images/vzm_favicon.png" alt="AOL logo">
                </span>
                        <span class="is-inline-block">Analytics Reporting</span>
                    </a>
                </li>
                <li>
                    <a class="is-block" href="https://thingspace.verizon.com/" target="_blank" rel="noopener"
                       role="menuitem" tabindex="-1">
                <span class="is-block">
                <img class="nav-brand" src="/static/images/verizon-icon.png" alt="Verizon logo">
                </span>
                        <span class="is-inline-block">Verizon IoT Developer</span>
                    </a>
                </li>
            </ul>
            <ul>
                <li>
                    <a class="is-block" href="https://dev.vdms.com/" target="_blank" rel="noopener" role="menuitem"
                       tabindex="-1">
                <span class="is-block">
                <img class="nav-brand" src="/static/images/vzm_favicon.png" alt="Verizon logo">
                </span>
                        <span class="is-inline-block">Media Platform Developer</span>
                    </a>
                </li>
            </ul>
        </div>
      </div>
    
    
      <div id="apps-overlay" class="overlay">
        <div class="pointer"></div>
        <div>
    
        </div>
        <ul>
          <li><a href="/apps">YDN Apps</a></li>
          <li><a href="https://dev.flurry.com">Flurry Apps</a></li>
          <li><a href="/search-sdk/apps">Search SDK Apps</a></li>
        </ul>
      </div>
    </div>
    
    <div class="mobile-header">
      <a href="#menu" id="menuLink" class="menu-link" aria-label="Menu Link">
        <!-- Hamburger icon -->
        <span aria-hidden="true"></span>
      </a>
    
        <a href="/" class="yahoo-phone" role="presentation" aria-label="Logo"><div class="logo-container" style="position:static"></div><div class="devtxt">developer</div></a>
    
      <a href="/find/" class="mobile-search-icon" role="presentation" aria-label="Search Logo"></a>
    </div>
    </div>
    <script>
      var BACKSPACE_KEY = 8;
      var DELETE_KEY = 46;
    
      var searchForm = document.querySelector('#search-form');
      var searchScopeName = document.querySelector('#search-scope-name');
      var searchScopeUrl = document.querySelector('#search-scope-url');
      var searchInput = document.querySelector('#search-input');
      var searchScope = document.querySelector('.search-scope');
    
      if (searchScope) {
        var paddingOffset = searchScope.offsetWidth + 40;
        searchInput.style.paddingLeft = paddingOffset + 'px';
      }
    
      searchInput.addEventListener('keydown', handleSearchKeyDown);
      searchInput.addEventListener('blur', handleSearchLoseFocus);
      searchInput.addEventListener('focus', handleSearchFocus);
      searchInput.addEventListener('blur', handleLoseFocus);
    
      var pageName = window.location.pathname.split("/")[1];
      var navElement = document.getElementById("nav-"+pageName);
      if(navElement){
          navElement.classList.add("selected");
      }
    
      function handleSearchFocus(event) {
        searchForm.style.width = "375px";
      }
    
      function handleLoseFocus(event) {
        searchForm.style.width = "250px";
      }
    
      window.addEventListener('resize', function(event){
        searchForm.style.width = "250px";
      });
    
      function handleSearchKeyDown(event) {
        var searchText = document.querySelector('#search-input').value;
        searchScope = document.querySelector('.search-scope');
    
        // When search bar is empty and Backspace or Delete keys are pressed, then
        // remove contextual scope from the search bar.
        // Note: Brightroll DSP is locked into contextual search.
        // Note: A.I. Studio is locked into contextual search.
        if (!searchText.length && searchScopeName.value !== 'DSP' && searchScopeName.value !== 'A.I. Studio' && (event.keyCode === BACKSPACE_KEY || event.keyCode === DELETE_KEY)) {
          searchScope.style.display = 'none';
          searchInput.style.paddingLeft = 10 + 'px';
          searchScopeName.disabled = true;
          searchScopeUrl.disabled = true;
        }
      }
    
      // Reset contextual search when the search bar loses focus and it's empty.
      function handleSearchLoseFocus(event) {
        var searchText = document.querySelector('#search-input').value;
    
        // Restore contextual label if it has been removed via the backspace key
        // but the text field is still empty.
        if (searchScope && !searchText.length) {
          searchScope.style.display = 'block';
          searchInput.style.paddingLeft = paddingOffset + 'px';
          searchScopeName.disabled = false;
          searchScopeUrl.disabled = false;
        }
      }
    
      // Update locale setting from language dropdown
      $('a[data-lang]').click(function(e) {
        e.preventDefault();
    
        // Load PH cookie and convert it to object.
        // If PH cookie is not available, create an empty object.
        var locale = $(this).data('lang');
        var phCookie = $.cookie('PH');
        var phCookieObject = phCookie ? queryStringToObject(phCookie) : {};
    
        // Update locale.
        phCookieObject.l = locale;
    
        // Set new PH cookie.
        $.cookie.raw = true;
    
        $.cookie('PH', $.param(phCookieObject), { path: '/', domain: 'yahoo.com' });
    
        location.reload();
      });
    
      function queryStringToObject(query) {
        var qs = {};
        var vars = query.split('&');
    
        for (var i = 0; i < vars.length; i++) {
          var pair = vars[i].split('=');
          pair[0] = decodeURIComponent(pair[0]);
          pair[1] = decodeURIComponent(pair[1]);
          if (typeof qs[pair[0]] === 'undefined') {
            qs[pair[0]] = pair[1];
          } else if (typeof qs[pair[0]] === 'string') {
            qs[pair[0]] = [qs[pair[0]], pair[1]];
          } else {
            qs[pair[0]].push(pair[1]);
          }
        }
        return qs;
      }
    
    </script>
  <div id="layout">

    <div id="menu">
      <div class="pure-menu pure-menu-open">
  <ul>
      <li class="light-bkg mobile-menu-only"><a class="d" href="/opensource/">Open Source</a></li>
      <li class="light-bkg mobile-menu-only"><a class="d" href="/api/">APIs</a></li>
      <li class="light-bkg mobile-menu-only"><a class="d" href="/advertising/">Advertising</a></li>
      <li class="light-bkg mobile-menu-only"><a class="d" href="/blogs/">Blog</a></li>
      <li class="light-bkg mobile-menu-only"><a class="d" href="/events/">Events</a></li>
      <li class="light-bkg mobile-menu-only"><a class="d" href="/podcasts/">Podcasts</a></li>
      <li class="light-bkg mobile-menu-only"><a class="d" href="/apps/">Apps</a></li>

      <!-- <li class="pure-menu-heading"><a href="/everything.html">Products</a></li> -->






      <li class="light-bkg mobile-menu-only">
        <a class="d" href="https://login.yahoo.com?done=&src=devnet&specId=usernameReg">Sign In</a>
      </li>
    <li class="light-bkg mobile-menu-only">
      <a href="#" aria-label="Language Menu">Language:</a>
      <ul>
        <li><a class="d" data-lang="en-US" href="#" aria-label="Translates to English"><span class="flag-icon flag-icon-us" aria-hidden="true"></span> English (U.S.)</a></li>
        <li><a class="d" data-lang="zh-Hant-HK" href="#" aria-label="Translates to Chinese (Hong Kong)"><span class="flag-icon flag-icon-hk" aria-hidden="true"></span> 中文(香港)</a></li> 
        <li><a class="d" data-lang="zh-Hant-TW" href="#" aria-label="Translates to Chinese (Taiwan)"><span class="flag-icon flag-icon-tw" aria-hidden="true"></span> 中文(台灣)</a></li> 
      </ul>
    </li>
  </ul>
</div>

<script>
  // Update locale setting from language dropdown
  $('a[data-lang]').click(function(e) {
    e.preventDefault();

    // Load PH cookie and convert it to object.
    // If PH cookie is not available, create an empty object.
    var locale = $(this).data('lang');
    var phCookie = $.cookie('PH');
    var phCookieObject = phCookie ? queryStringToObject(phCookie) : {};

    // Update locale.
    phCookieObject.l = locale;

    // Set new PH cookie.
    $.cookie.raw = true;

    $.cookie('PH', $.param(phCookieObject), { path: '/', domain: 'yahoo.com' });

    location.reload();
  });

  function queryStringToObject(query) {
    var qs = {};
    var vars = query.split('&');

    for (var i = 0; i < vars.length; i++) {
      var pair = vars[i].split('=');
      pair[0] = decodeURIComponent(pair[0]);
      pair[1] = decodeURIComponent(pair[1]);
      if (typeof qs[pair[0]] === 'undefined') {
        qs[pair[0]] = pair[1];
      } else if (typeof qs[pair[0]] === 'string') {
        qs[pair[0]] = [qs[pair[0]], pair[1]];
      } else {
        qs[pair[0]].push(pair[1]);
      }
    }
    return qs;
  }
</script>
    </div>

    <div id="main">
      <link rel="stylesheet" href="https://s.yimg.com/oo/cms/products/site/assets/css/slick_7321dcc70.css">
<link rel="stylesheet" href="https://s.yimg.com/oo/cms/products/site/assets/css/r-homepage_01740a90a.css">
<link rel="stylesheet" href="https://s.yimg.com/oo/cms/products/site/assets/css/r-translucent-header_964b4c879.css">
<link rel="stylesheet" href="https://s.yimg.com/oo/cms/products/site/assets/css/r-translucent-header_964b4c879.css">

<style>
   span i{
        padding-right:0.5em;
    }
    .podcast-timeline span:nth-child(1){
        margin-right:1em;
    }
    .blog p.regular a{
        font-weight:bold;
        color:rgba(48,48,48,1);
        font-size:16px;
        line-height:26px;
    }
    .blog p.regular a{
        transition:all 1s;
    }
    .blog p.regular a:hover, .blog p.regular a:focus{
        color:rgba(74,144,226,1);
    }
    .img-wrapper figure,.img-wrapper>a img{
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%,-50%);
        width: 100%;
        vertical-align: middle;
    }
    .img-wrapper p{
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%,-50%);
        width: 100%;
        vertical-align: middle;
        text-align:center;
    }
    .img-wrapper > :not(iframe):not(.r-blog):not(img):not(.noImg):not(figure){
        display:none;
    }

    .podcast-container{
      overflow-x: hidden;
      overflow-y: scroll;
      width:100%;
    }
    .pure-g-r.flex-container{
        margin-top:0em;
        margin-bottom:0em;
    }

    h2.feed-header span{
      display: inline-block;
      margin-top: -25px;
    }

    h2.feed-header span iframe{
        height: 26px !important;
        padding-left: 10px;
    }

</style>

<div id="carousel">
    <div class="carousel-content home">
        <div class="container">
                <div class="carousel-container container">
                    <h1 data-sr="enter left move 150px over 1s" >Technology you can use to build products they'll love</h1>
                     <a href="/opensource/" class="pure-button pure-button-primary" data-rapid_p="15">Learn More</a>
            </div>
        </div>
    </div>

    <div class="purple-bg vespa carousel-content">
        <div class="container top-50">
            <div class="pure-u-1">
              <div class="carousel-container">
                   <img src="/static/images/vespa-logo-mark-full.svg" alt="Mobile" class="carosal-images">
                    <h1 data-sr="enter left move 150px over 1s" style="line-height: 5px;">Vespa</h1>
                    <h3 data-sr="wait 0.5s enter left move 150px over 1s" >Big Data. Real Time.</h3> 
                    <a href="http://vespa.ai/" class="pure-button pure-button-primary">Project Overview</a>
                </div>
                <br/> 
            </div>
        </div>
    </div>

    <div class="purple-bg screwdriver carousel-content">
        <div class="container top-50">
            <div class="pure-u-1">
              <div class="carousel-container">
                   <img src="/static/images/screwdriver-logo-mark-white.svg" alt="Mobile" class="carosal-images">
                    <h1 data-sr="enter left move 150px over 1s" style="line-height: 5px;">Screwdriver</h1>
                    <h3 data-sr="wait 0.5s enter left move 150px over 1s">Build. Test. Deploy.</h3> 
                    <a href="http://screwdriver.cd/" class="pure-button pure-button-primary">Project Overview</a>
                </div>
                <br/> 
            </div>
        </div>
    </div>

    <div class="purple-bg athenz carousel-content">
        <div class="container top-50">
            <div class="pure-u-1">
              <div class="carousel-container">
                   <img src="/static/images/athenz-logo-mark-white.svg" alt="Mobile" class="carosal-images">
                    <h1 data-sr="enter left move 150px over 1s" style="line-height: 5px;">Athenz</h1>
                    <h3 class="athenz" data-sr="wait 0.5s enter left move 150px over 1s">Open source platform for X.509 certificate based service authentication
and fine grained access control in dynamic infrastructures</h3> 
                    <a href="http://www.athenz.io/" class="pure-button pure-button-primary">Project Overview</a>
                </div>
                <br/> 
            </div>
        </div>
    </div>



</div>
<div class="">
        <div class="container padding-sides">
          <h2 class="header pure-u-1-1 blog-header">Latest Blog Posts <a href="/blogs/">View All</a></h2>
            <div class="pure-g-r flex-container" id="blogs">
                    <div class="pure-u-1-3  flex-item  blog blog-639671622393118720">
        <a href='/blogs/639671622393118720/' class="d">
            <div class="image-container">
                <img src="/static/images/img-placeholders/ydn-placeholder-5.jpg" alt="Improvements and updates."/>
            </div>
            <div class="regular">
                <p class="overflow-3">Improvements and updates.</p>
                <i class="d-icon d-calendar is-visible-mobile"></i><span class="is-visible-mobile"></span>
                <script>
                    var d = new Date('January 7, 2021');
                    $('.blog-639671622393118720 .regular span').text(d.toDateString());
                </script>
            </div>
        </a>
    </div>
    <div class="pure-u-1-3  flex-item  blog blog-630726409431760896">
        <a href='/blogs/630726409431760896/' class="d">
            <div class="image-container">
                <img src="/static/images/img-placeholders/ydn-placeholder-4.jpg" alt="Explore Screwdriver at CDCon 2020"/>
            </div>
            <div class="regular">
                <p class="overflow-3">Explore Screwdriver at CDCon 2020</p>
                <i class="d-icon d-calendar is-visible-mobile"></i><span class="is-visible-mobile"></span>
                <script>
                    var d = new Date('September 30, 2020');
                    $('.blog-630726409431760896 .regular span').text(d.toDateString());
                </script>
            </div>
        </a>
    </div>
    <div class="pure-u-1-3  flex-item  blog blog-626730108375465985">
        <a href='/blogs/626730108375465985/' class="d">
            <div class="image-container">
                <img src="/static/images/img-placeholders/ydn-placeholder-6.jpg" alt="SonarQube Enterprise Edition Support"/>
            </div>
            <div class="regular">
                <p class="overflow-3">SonarQube Enterprise Edition Support</p>
                <i class="d-icon d-calendar is-visible-mobile"></i><span class="is-visible-mobile"></span>
                <script>
                    var d = new Date('August 17, 2020');
                    $('.blog-626730108375465985 .regular span').text(d.toDateString());
                </script>
            </div>
        </a>
    </div>

            </div>
            <hr class="spacing"/>
            <div class="flex-container pure-g-r social-wrapper">
                <div class="flex-item pure-u-1-2 gutter-right">
                   <div class="card-content">

                        <h2 class="header feed-header">Podcasts
                          <span><iframe title="Podcasts" allowtransparency="true" scrolling="no" frameborder="no" src="https://w.soundcloud.com/icon/?url=http%3A%2F%2Fsoundcloud.com%2Fydn&color=orange_transparent&size=40" style="width: 40px; height: 40px;"></iframe></span>
                        </h2>
                        <div class="podcast-container home">
                            <iframe title="Podcasts" width="100%" height="500" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/playlists/661124433&color=%237915ab&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true"></iframe>
                        </div>
                   </div>
                </div>
                <div class="flex-item pure-u-1-2 gutter-left">
                    <div class="card-content" >
                        <h2 class="header feed-header">Follow us on Twitter <a href="https://twitter.com/ydn" style="font-size: 24px;padding-left: 10px;" aria-label="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i></a></h2>
                        <div class="border timeline-ydn" id="timeline-wrapper">
                            <a data-widget-id="ydn-timeline" class="twitter-timeline" data-height="497" data-chrome="nofooter transparent noheader transparent" href="https://twitter.com/ydn?ref_src=twsrc%5Etfw">Tweets by ydn</a> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
                        </div>
                    </div>
                </div>
            </div>
            <hr class="spacing"/>
            <div class="pure-g-r flex-container is-hidden-mobile">
                <div class="flex-item pure-u-1-2 gutter-right">
                    <div class="card-content">
                        <div class="flex-container-2 border">
                            <div class="pure-u-1-4 image-wrapper">
                                <img src="https://s.yimg.com/oo/cms/products/site/assets/images/svg/Artboard 3100_2585f1d77.svg" alt="APIs Logo"/ dataAlternate="https://s.yimg.com/oo/cms/products/site/assets/images/Artboard 3100_1f3ac0f6a.png">
                            </div>
                            <div class="pure-u-3-4 content-wrapper">
                                <h2 class="header">APIs</h2>
                                <p class="content-info">Let us help you make your apps better by leveraging our APIs.</p>
                                <a class="d browse" href="/api/">Browse APIs</a>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="flex-item pure-u-1-2 gutter-left">
                    <div class="card-content">
                        <div class="flex-container-2 border">
                            <div class="pure-u-1-4 image-wrapper"><img src="https://s.yimg.com/oo/cms/products/site/assets/images/svg/os-icon_a0ce27e3b.svg" alt="Open Source Logo"/></div>
                            <div class="pure-u-3-4 content-wrapper">
                                <h2 class="header">Open Source</h2>
                                <p class="content-info">Join a community of people who are passionate about the
                                technologies you care about. Or just use our free open source code. </p>
                                <a class="d browse" href="/opensource/">Browse code</a>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="pure-g-r flex-container is-visible-mobile">
                <a href="/api/" class="d button is-primary">Browse APIs</a>
                <a href="/opensource/" class="d button is-primary">Browse Open Source Projects</a>
            </div>
            <div class="border" style="text-align: center; margin:2em 0 6em;">
                <p class="ads">Looking for Advertising Development Tools? <a href="/advertising/">Browse Advertising Docs</a> </p>
            </div>
        </div>
 </div>


<script>
    $(window).on('load', function () {
        $('iframe[id^=twitter-widget-]').each(function () {
            var head = $(this).contents().find('head');
            if (head.length) {
                head.append('<style>.timeline { max-width: 100% !important; width: 100% !important; } .timeline .stream { max-width: none !important; width: 100% !important; }</style>');
            }
            $('#twitter-widget-0').append($('<div class=timeline>'));
        });
    });

    function customTwitterStyles() {
        var intervalTwitter = setInterval( function() {
                if (document.querySelector('[id*=twitter-widget]') && document.querySelector('[id*=twitter-widget]').contentDocument) {
                    var ibody = $(document.querySelector('[id*=twitter-widget]').contentDocument).find( 'body' );
                    if(ibody.find('.TweetAuthor-screenName').length){
                    ibody.find('.timeline-Tweet-text').css({'font-size':'14px','line-height':'20px','font-family':'helvetica neue','font-weight':'normal','color':'rgba(48,48,48,1)'});
                    ibody.find('.timeline-Tweet-text a').css({'color':'rgba(74,144,226,1)'});
                    ibody.find('.timeline-Body').css({'border-top':0,'border-bottom':0});
                    ibody.find('.TweetAuthor-screenName').css({'color':'rgba(127,127,127,1)'});

                    $('#timeline-wrapper').removeClass('timeline-ydn');

                    if((/android|webos|iphone|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase()))){
                        ibody.find('.timeline-Tweet-media').css({'margin-left':'0px'});
                        ibody.find('.timeline-Tweet-text').css({'margin-left':'0px'});
                    }

                    clearInterval(intervalTwitter);
                }
            }
        }, 300)
    }

    customTwitterStyles();

    var homeCarousel = $('#carousel').slick({
        dots: true,
        infinite: true,
        speed: 300,
        slidesToShow: 1,
        adaptiveHeight: true,
        autoplay: true,
        autoplaySpeed: 3000,
        cssEase: 'linear',
        mobileFirst: true,
        prevArrow: '',
        nextArrow: '',
        pauseOnHover:false,
        onAfterChange: function(){
             if( 0 == homeCarousel.slickCurrentSlide() ){
                 homeCarousel.slickPause();
             };
         }
    });

    $("#mktoForm").submit(function(event) {
        event.preventDefault();

        var $form = $( this ),
                email = $form.find( "input[name='Email']" ).val(),
                formid = $form.find( "input[name='formid']" ).val(),
                munchkinid = $form.find( "input[name='munchkinId']" ).val(),
                url = $form.attr( "action" );

        if (email) {
            var getting = $.get(url, { Email: email, formid: formid, munchkinId: munchkinid, _mktoReferrer: location.href, _mkt_trk: "", formVid: 43 });

            getting.done(function( data ) {

                $("#mktoForm").hide();
                $("#thanks").show();
            });
        }

    });

    window.sr = new scrollReveal();
</script>
    </div>

</div>

<!-- FOOTER -->
<!-- Check for footer data -->
  <div id="foot" class="footer">
  	<div class="container padding-sides">
  	  <div class="pure-g-r footer-wrapper" style="overflow: hidden;">
  
  	    <div class="pure-u-1-2 pure-u-sm-1-1">
  	      <ul class="footer-links" id="desktop-footer">
  				<li>
  					<ul style="padding: 5px 0 0 0;">
  						<li class="menu-header">SUPPORT</li>
  						<li><a target="_blank" title="About Us" href="https://developer.yahoo.com/opensource/docs/">About Us</a></li>
  						<li><a target="_blank" href="https://www.linkedin.com/company/oathco/jobs/" title="Jobs">Jobs</a></li>
  						<li><a target="_blank" href="https://policies.oath.com/us/en/oath/privacy/products/developer/index.html" title="Privacy">Privacy</a></li>
  						<li><a target="_blank" href="https://info.yahoo.com/legal/us/yahoo/api/api-2140.html" title="Terms">Terms</a></li>
  						<li><a target="_blank" href="/policies" title="Policies">Policies</a></li>
  						<li><a target="_blank" title="Site Feedback" href="https://yahoo.uservoice.com/forums/182455-yahoo-developer-network">Site Feedback</a></li>
  					</ul>
  				</li>
  				<li>
  					<ul style="padding: 5px 0 0 0;">
  						<li class="menu-header">CONNECT</li>	
  						<li><a target="_blank" title="Follow us on GitHub" href="https://github.com/yahoo">GitHub</a></li>
  						<li><a target="_blank" title="Follow us on Facebook" href="https://www.facebook.com/yahoodevelopernetwork">Facebook</a></li>
  						<li><a target="_blank" title="Follow us on Twitter" href="https://twitter.com/ydn">Twitter</a></li>
  						<li><a target="_blank" title="Follow us on Tumblr" href="http://yahoodevelopers.tumblr.com">Tumblr</a></li>
  						<li><a target="_blank" title="Follow us on YouTube" href="https://www.youtube.com/user/ydntheater">YouTube</a></li>
  					</ul>
  				</li>
  				<li>
  					<ul style="padding: 5px 0 0 0; min-width: 225px;">
  						<li class="menu-header">DISCOVER</li>	
  						<li><a target="_blank" title="Verizon Media Developer Network" href="https://developer.verizonmedia.com/">Verizon Media Developer Network</a></li>
  						<li><a target="_blank" title="Verizon Ads SDK" href="https://sdk.verizonmedia.com/">Verizon Ads SDK</a></li>
  						<li><a target="_blank" title="Analytics Reports" href="https://help.verizonmedia.com/platform/Analytics-Reports/Analytics-Reports-Overview.htm">Analytics Reports</a></li>
  						<li><a target="_blank" title="Media Platform Developer" href="https://dev.vdms.com/">Media Platform Developer</a></li>
  						<li><a target="_blank" title="Verizon IOT Developer" href="https://thingspace.verizon.com/resources/documentation/">Verizon IOT Developer</a></li>
  						<li><a target="_blank" title="Ad Platform Help Center" href="https://help.verizonmedia.com/platform/Home.htm">Ad Platform Help Center</a></li>
  					</ul>
  				</li>
  	      </ul>
  		</div>
  		<div class="pure-u-1-2 pure-u-sm-1-1" id="mobile-footer-wrapper">
  	      	<ul class="footer-links" id="mobile-footer">
  				<li id="footer-social-wrapper">
  					<ul class="footer-social" style="padding: 5px 0 0 0;">
  						<li><a target="_blank" title="Follow us on GitHub" href="https://github.com/yahoo">GitHub</a></li>
  						<li><a target="_blank" title="Follow us on Facebook" href="https://www.facebook.com/yahoodevelopernetwork">Facebook</a></li>
  						<li><a target="_blank" title="Follow us on Twitter" href="https://twitter.com/ydn">Twitter</a></li>
  						<li><a target="_blank" title="Follow us on Tumblr" href="http://yahoodevelopers.tumblr.com">Tumblr</a></li>
  						<li><a target="_blank" title="Follow us on YouTube" href="https://www.youtube.com/user/ydntheater">YouTube</a></li>
  					</ul>
  				</li>
  				<li class="mobile-footer-item">
  					<ul style="padding: 5px 0 0 0;">
  						<li class="menu-header">DISCOVER</li>	
  							
  						<li><a target="_blank" title="Verizon Media Developer Network" href="https://developer.verizonmedia.com/">Verizon Media Developer Network</a></li>
  						<li><a target="_blank" title="Verizon Ads SDK" href="https://sdk.verizonmedia.com/">Verizon Ads SDK</a></li>
  						<li><a target="_blank" title="Analytics Reports" href="https://help.verizonmedia.com/platform/Analytics-Reports/Analytics-Reports-Overview.htm">Analytics Reporting</a></li>
  					    <li><a target="_blank" title="Ad Platform Help Center" href="https://help.verizonmedia.com/platform/Home.htm">Ad Platform Help Center</a></li>
  						<li><a target="_blank" title="Media Platform Developer" href="https://dev.vdms.com/">Media Platform Developer</a></li>
  						<li><a target="_blank" title="Verizon IOT Developer" href="https://thingspace.verizon.com/resources/documentation/">Verizon IOT Developer</a></li>
  					</ul>
  				</li>
  				<li class="mobile-footer-item">
  					<ul style="padding: 5px 0 0 0;">
  						<li class="menu-header">SUPPORT</li>
  						<li><a target="_blank" title="About Us" href="https://developer.yahoo.com/opensource/docs/">About Us</a></li>
  						<li><a target="_blank" href="https://www.linkedin.com/company/oathco/jobs/" alt="Jobs">Jobs</a></li>
  						<li><a target="_blank" href="https://policies.oath.com/us/en/oath/privacy/products/developer/index.html" alt="Privacy">Privacy</a></li>
  						<li><a target="_blank" href="https://info.yahoo.com/legal/us/yahoo/api/api-2140.html" alt="Terms">Terms</a></li>
  						<li><a target="_blank" href="/policies" alt="Policies">Policies</a></li>
  						<li><a target="_blank" title="Site Feedback" href="https://yahoo.uservoice.com/forums/182455-yahoo-developer-network">Site Feedback</a></li>
  					</ul>
  				</li>
  	     	 </ul>
  		</div>
  		<div class="pure-u-1-2 pure-u-sm-1-1" id="footer-right" style="color:white">
  			<p>&copy; Verizon Media. All right reserved.</p>
  		</div>
            
  		</div>
  	</div>
  </div>
<script src="https://s.yimg.com/zz/combo?oo/fe/js/polyfills/assign-min_6f975308e.js&oo/fe/js/navigation-min_3c753d938.js&oo/fe/js/utils-min_65ef3b583.js&oo/fe/js/admin-min_b737dfd14.js"></script>

    <script>
        var head = $('.page-head-search'),
        url = document.URL,
        fragment = url.substring(url.indexOf('#')),
        pathAndFragment = '/' + url.split('/').splice(3).join('/'), // i.e., /gemini/guide/gsg.html#integrating-oauth
        path = (pathAndFragment.indexOf('#') > -1) ? pathAndFragment.substring(0, pathAndFragment.indexOf('#')) : pathAndFragment, // i.e., /gemini/guide/gsg.html
        // the menu li container that matches the scope of menu items on the current page
        menuPageRoot,
        languageLeaveWait,
        userLeaveWait, // a timeout for mouseleave from header's user id and pic elements
        menuIsExpanded = false,
        overMenu = false, // is cursor over the user id or pic
        userOverlay, // menu overlay that pops up from user id or pic
        languageOverlay, // menu overlay that pops up from language dropdown link
        dialpadOverlay,
        dialpadLeaveWait,
        headToMenuArr = [],
        $headings,
        menuList = $('.pure-menu a'),
        menuLiList = $('.pure-menu li'),
        pageMenuList, // only the menu items that have heads on this page (used for scrolling highlight)
        isThrottled = false,
        throttleDuration = 100; // ms
    
        if ($('.feedback_close')) {
            $('.feedback_close').click(function (e) {
                $('.feedback').remove();
            });
        }
    
        // allows the menu to slide in/out on mobile size screens
        function slideMobileMenu() {
            $('#layout').toggleClass('active'); // the menu and page contents
            $('.pure-menu').toggleClass('active'); // the menu
            $('#menuLink').toggleClass('active'); // hamburger icon
            $('.footer').toggleClass('active'); // footer needs to slide too
            $('.mobile-header').toggleClass('active'); // top bar needs to slide too
        }
    
        $('#menuLink').click(function (e) {
            e.preventDefault(); // without this, the first menu item can get triggered on a mobile device when the hamburger icon is clicked
            setTimeout(function () {
                slideMobileMenu();
            }, 200);
        });
    
        // set/remove box-shadow on head if scrolled
        $(document).scroll(function () {
            if (window.scrollY > 5) {
                head.addClass('head-shadow');
            } else {
                head.removeClass('head-shadow');
            }
        });
    
        // Begin language overlay
        languageOverlay = $('#language-overlay');
        languageOverlay.css('z-index', 10);
    
        $('.head-right-controls').delegate('#language-dropdown', 'mouseover', function (e) {
            let top;
            let left;
                left = $(".head-right-controls").position().left + $(".head-right-controls").width()-275;
            top = $(".head-right-controls").position().top + $(".head-right-controls").height() + 5;
                
            dialpadOverlay.css('display','none');
            
            languageOverlay.css({
                top: top+"px",
                left: left + "px"
            });
            languageOverlay.css('display','table');
        });
    
        $('#language-overlay').mouseover(function () {
            clearTimeout(languageLeaveWait);
            overMenu = true;
        });
    
        // when cursor leaves My Apps,
        // if it doesn't move over the menu within 1sec,
        // hide the menu
        $('#language-dropdown').mouseleave(function (e) {
            languageLeaveWait = setTimeout(function () {
                if (overMenu === false) {
                    removeLanguageOverlay(e);
                }
            }, 1000);
        });
    
    
        function removeLanguageOverlay() {
            languageOverlay.css('display','none');
            overMenu = false;
        }
    
        $('#language-overlay').click(removeLanguageOverlay);
        $('#language-overlay').mouseleave(removeLanguageOverlay);
    
         // Begin dialpad overlay
        dialpadOverlay = $('#dialpad-overlay');
        dialpadOverlay.css('z-index', 10);
    
        $('.head-right-controls').delegate('#dialpad-dropdown', 'mouseover', function (e) {
            let top;
            let left;
                left = $(".head-right-controls").position().left + $(".head-right-controls").width()-545;
               
            top = $(".head-right-controls").position().top + $(".head-right-controls").height() - 5;
                
            languageOverlay.css('display','none');
           
            dialpadOverlay.css({
                top: top+"px",
                left: left + "px"
            });
            dialpadOverlay.css({
                'display':'block',    
                'background-color': '#fff',
        'border-radius': '4px',
        'box-shadow': '0 2px 8px 2px rgba(0, 0, 0, 0.36)',
      'width': '410px',
        'height': '265px',
        'padding':'25px 25px 0px',
        'min-width': '20rem'});
        });
        var overDialMenu = false;
        
        $('#dialpad-overlay').mouseover(function () {
            clearTimeout(dialpadLeaveWait);
            overDialMenu = true;
        });
    
         // when cursor leaves My Apps,
        // if it doesn't move over the menu within 1sec,
        // hide the menu
        $('#dialpad-dropdown').mouseleave(function (e) {
            dialpadLeaveWait = setTimeout(function () {
                if (overDialMenu === false) {
                    removeDialpadOverlay(e);
                }
            }, 1000);
        });
    
    
        function removeDialpadOverlay() {
            dialpadOverlay.css('display','none');
            overDialMenu = false;
        }
    
        $('#dialpad-overlay').click(removeDialpadOverlay);
        $('#dialpad-overlay').mouseleave(removeDialpadOverlay);
    
        
    
        
        $('#dialpad-dropdown').click(function(){
                 $('#dialpad-overlay').css('display','block');
        });
    
        
        function supportsSVG() {
            return !!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect;
        }
    
        if (!supportsSVG()) {
            var imgs = document.getElementsByTagName('img');
            var dotSVG = /\.svg$/;
            for (var i = 0; i !== imgs.length; ++i) {
                if (imgs[i].src.match(dotSVG) && imgs[i].dataAlternate) {
                    imgs[i].src = imgs[i].dataAlternate;
                }
            }
        }
    </script>


<!-- Use default JavaScript -->

<script src="https://s.yimg.com/ss/rapid-3.41.3.js"></script>
<script>
  var rapid = new YAHOO.i13n.Rapid({webworker_file: 'http://l.yimg.com/oo/fe/js/vendor/rapidworker-1-min_b8fccc270.js' ,spaceid:1197800063, tracked_mods:['layout']});
</script>

<script>  

  $(document).ready(function() {
  $('.dropdown-trigger button').click(function(){
    var element = $('.dropdown');
    $('.dropdown').toggleClass('is-active');
    $('.dropdown button').attr(
      'aria-expanded',
      $(element).hasClass('is-active')
    );
    event.stopPropagation();
  });

  $('body').click(function(){
    var element = $('.dropdown');
    var menuOpen = $(element).hasClass('is-active');
    if (menuOpen) {
      $(element).removeClass('is-active');
      $('.dropdown button').attr('aria-expanded', !menuOpen);
    }
  });
  });
(function(){
  var test = document.createElement('div');
  test.innerHTML = '&nbsp;';
  test.className = 'adsbox';
  document.body.appendChild(test);
  window.setTimeout(function() {
    if (test.offsetHeight === 0) {
      if ($(':header').length > 0 && $(':header').is(':visible') === false) {
        var callout = $('div.g-content');
        callout.first().prepend("<div class='admonition important' style='margin-top: 20px'><p class='first admonition-title'>Ad Blocker Detected</p><p class='last'>We've detected the use of an ad blocker. For the best viewing experience, we recommend that you disable your ad blocker.</p>");
      }
    }
    test.remove();
  }, 100);
})();
</script>

<script>
  (function() {
    // Check if we're in gemini domain
    if (window.location.href.indexOf('gemini-publishers-synd/docs/') > -1) {
      console.log(window.location.href);
      var callout = $('div.g-content');
      callout.first().prepend("<div class='admonition important' style='margin-top: 20px'><p class='first admonition-title'>Deprication Warning</p><p class='last'>These docs have been deprecated. Please use <a href='https://developer.yahoo.com/flurry/docs/publisher/web/'>the documentation here</a>.</p>");
    }
  })();
  $("div.section table").parent().css("overflow-x", "auto");
</script>

<!--  renders each hoverbox-->
<script>

  function enableTooltip(){  
    $('.reference.internal').each(function() {
        var reference = $(this).find('.std-term');
        var definition = $(this.hash + ' + dd');
        if (reference.length !== 0 && definition.length !== 0) {
            $(this).removeAttr("href"); // remove link to glossary page
            $(this).on("click", function(e) { // make it not clickable
                e.preventDefault();
                return false;
            });
            $(reference) // set tooltip
                .tooltip({
                    html: true,
                    trigger: 'manual',
                    placement: 'top',
                    title: definition.html()
                }).on("mouseenter", function() {
                    var _this = this;
                    $('.reference.internal .std-term').tooltip('hide');
                    $(this).tooltip('show');
                    $('.tooltip').on('mouseleave', function() {
                        $(_this).tooltip('hide');
                    });
                }).on("mouseleave", function() {
                    var _this = this;
                    setTimeout(function() {
                        if ($('.tooltip:hover').length === 0) {
                            $(_this).tooltip('hide');
                        }
                    }, 200);
                });
        }
    });
  }
  
  enableTooltip();

</script>

</body>
</html>