<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="author" content="Maria Odea Ching" />
    <meta name="Date-Creation-yyyymmdd" content="20120924" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Archiva Documentation &#x2013; RSS Feeds</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />
      <script type="text/javascript" src="../js/apache-maven-fluido-1.6.min.js"></script>
      <!-- Google Analytics -->
    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-140879-5']);
      _gaq.push(['_trackPageview']);
      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
    </script>
      </head>
    <body class="topBarDisabled">
                      <a href="https://github.com/apache/archiva">
      <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
        src="https://s3.amazonaws.com/github/ribbons/forkme_right_gray_6d6d6d.png"
        alt="Fork me on GitHub">
    </a>
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://archiva.apache.org/" id="bannerLeft"><img src="http://archiva.apache.org/images/archiva.png"  alt="Apache Archiva"/></a></div>
        <div class="pull-right"><a href="http://www.apache.org/" id="bannerRight"><img src="https://www.apache.org/images/asf_logo_wide_2016.png"  alt="Apache Software Foundation"/></a></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li class=""><a href="https://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="../../../index.html" title="Archiva">Archiva</a><span class="divider">/</span></li>
      <li class=""><a href="../index.html" title="Archiva Documentation">Archiva Documentation</a><span class="divider">/</span></li>
    <li class="active ">RSS Feeds</li>
        <li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2019-11-30</li>
          <li id="projectVersion" class="pull-right">Version: 3.0.0-SNAPSHOT</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Introduction</li>
    <li><a href="../quick-start.html" title="Quick Start"><span class="none"></span>Quick Start</a>  </li>
    <li><a href="../tour/index.html" title="Feature Tour"><span class="none"></span>Feature Tour</a>  </li>
    <li><a href="../release-notes.html" title="Release Notes"><span class="none"></span>Release Notes</a>  </li>
    <li><a href="../../../download.html" title="Downloads"><span class="none"></span>Downloads</a>  </li>
          <li class="nav-header">Users Guide</li>
    <li><a href="../userguide/browsing.html" title="Browsing"><span class="none"></span>Browsing</a>  </li>
    <li><a href="../userguide/searching.html" title="Searching"><span class="none"></span>Searching</a>  </li>
    <li><a href="../userguide/delete-artifact.html" title="Deleting an Artifact"><span class="none"></span>Deleting an Artifact</a>  </li>
    <li><a href="../userguide/using-repository.html" title="Using as a repository"><span class="none"></span>Using as a repository</a>  </li>
    <li><a href="../userguide/deploy.html" title="Deploying to repository"><span class="none"></span>Deploying to repository</a>  </li>
    <li><a href="../userguide/virtual-repositories.html" title="Configuring Virtual Repositories"><span class="none"></span>Configuring Virtual Repositories</a>  </li>
    <li class="active"><a href="#"><span class="none"></span>Rss Feeds in Archiva</a>
  </li>
    <li><a href="../userguide/querying-artifacts.html" title="Querying Artifacts"><span class="none"></span>Querying Artifacts</a>  </li>
          <li class="nav-header">Administrators Guide</li>
    <li><a href="../adminguide/installing.html" title="Installing Archiva"><span class="icon-chevron-right"></span>Installing Archiva</a>  </li>
    <li><a href="../adminguide/databases.html" title="Databases"><span class="none"></span>Databases</a>  </li>
    <li><a href="../adminguide/repositories-content-storage.html" title="Repositories Content Storage"><span class="none"></span>Repositories Content Storage</a>  </li>
    <li><a href="../adminguide/security.html" title="Security"><span class="icon-chevron-right"></span>Security</a>  </li>
    <li><a href="../adminguide/configuration.html" title="Archiva Configuration"><span class="icon-chevron-right"></span>Archiva Configuration</a>  </li>
    <li><a href="../adminguide/webservices/rest.html" title="REST Apis"><span class="none"></span>REST Apis</a>  </li>
    <li><a href="../adminguide/configuration-files.html" title="Configuration Files"><span class="none"></span>Configuration Files</a>  </li>
    <li><a href="../adminguide/system-status.html" title="System Status"><span class="none"></span>System Status</a>  </li>
    <li><a href="../adminguide/logging.html" title="Log Files"><span class="icon-chevron-right"></span>Log Files</a>  </li>
    <li><a href="../adminguide/reports.html" title="Reports"><span class="none"></span>Reports</a>  </li>
          <li class="nav-header">Customising Archiva</li>
    <li><a href="../customising/writing-consumer.html" title="Writing a Consumer Plugin"><span class="none"></span>Writing a Consumer Plugin</a>  </li>
          <li class="nav-header">More Information</li>
    <li><a href="https://cwiki.apache.org/confluence/display/ARCHIVA/Index" class="externalLink" title="Archiva Wiki"><span class="none"></span>Archiva Wiki</a>  </li>
          <li class="nav-header">ASF</li>
    <li><a href="https://www.apache.org/foundation/how-it-works.html" class="externalLink" title="How Apache Works"><span class="none"></span>How Apache Works</a>  </li>
    <li><a href="https://www.apache.org/foundation/" class="externalLink" title="Foundation"><span class="none"></span>Foundation</a>  </li>
    <li><a href="https://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsoring Apache"><span class="none"></span>Sponsoring Apache</a>  </li>
    <li><a href="https://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
          <li class="nav-header">Project Documentation</li>
    <li><a href="../project-info.html" title="Project Information"><span class="icon-chevron-right"></span>Project Information</a>  </li>
  </ul>
<form id="search-form" action="https://www.google.com/search" method="get" >
      <input value="https://archiva.apache.org/docs/3.0.0-SNAPSHOT/" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript">asyncJs( 'https://cse.google.com/brand?form=search-form' )</script>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
                          <div id="twitter">
        <a href="https://twitter.com/archiva" class="twitter-follow-button" data-show-count="false" data-align="left" data-size="medium" data-show-screen-name="true" data-lang="en">Follow archiva</a>
    <script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
        </div>
                  <div class="clear"></div>
              <div class="clear"></div>
  <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" /></a>
              </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<div class="section">
<h2><a name="RSS_Feeds"></a>RSS Feeds</h2>
<p>There are two types of rss feeds in Archiva: new artifacts in repo feed and new versions of artifact feed.</p>
<div class="section">
<h3><a name="New_Artifacts_In_Repository"></a>New Artifacts In Repository</h3>
<p>For versions 1.1 and 1.1.1, the default url for this feed is <tt>http://[hostname]:[port]/archiva/rss/rss_feeds?repoId=[repositoryId]</tt>. But since version 1.1.2, this has been changed to <tt>http://[hostname]:[port]/archiva/feeds/[repositoryId]</tt>. Since version 2.0.0 feed changed changed to <tt>http://[hostname]:[port]/feeds/[repositoryId]</tt>.</p>
<p>There are two ways to subscribe to this feed:</p>
<p>1. By copying the default url specified above and adding this to your feed reader. Just make sure to replace the <tt>hostname</tt>, <tt>port</tt> and <tt>repositoryId</tt>. The <tt>repositoryId</tt> is the id of the Archiva repo which you want to monitor.</p>
<p>2. Via the feed icon in the Repositories page. Right click on the feed icon of the repository configuration and copy the link. Then add this link to your feed reader.</p><img src="../images/rss-repositories.png" alt="" /></div>
<div class="section">
<h3><a name="New_Versions_of_an_Artifact"></a>New Versions of an Artifact</h3>
<p>The default url for this feed for versions 1.1 and 1.1.1 is <tt>http://[hostname]:[port]/archiva/rss/rss_feeds?groupId=[groupId]&amp;artifactId=[artifactId]</tt> but was changed to <tt>http://[hostname]:[port]/archiva/feeds/[groupId]/[artifactId]</tt> since version 1.1.2 for consistency purposes. Since version 2.0.0 feed changed changed to <tt>http://[hostname]:[port]/feeds/[groupId]/[artifactId]</tt></p>
<p>You could subscribe to the feed the same way as specified in the New Artifacts In Repository section except that in #1, you need to specify the <tt>groupId</tt> and <tt>artifactId</tt> instead of the <tt>repositoryId</tt>. And in #2, you need to go to the Browse section. The rss feed icon is located in the artifactId level.</p><img src="../images/rss-browse.png" alt="" /></div>
<div class="section">
<h3><a name="Authentication"></a>Authentication</h3>
<p>The authentication method used for the rss feeds is Http Basic Authentication. If your reader supports this, you would be prompted for a username and password when you subscribe to the feed. Supply your Archiva account credentials for this. Take note that only users with an Observer role for the specific repository would be able to subscribe to this feed.</p>
<p>If the 'guest' account is enabled for the repository, you would no longer be asked for the username and password when you subscribe to the feed.</p></div></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
<div class="row">
      <div class="span6 offset1">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
      </div>
      <div class="row">
        &nbsp;
      </div>
      <div class="row">
      <div class="span6 offset2">
      <p>
        <a href="https://archiva.apache.org/docs/3.0.0-SNAPSHOT/privacy-policy.html">Privacy Policy</a>
        </p>
      </div>
      </div>
        </div>
                          <div id="ohloh" class="pull-right">
      <script type="text/javascript" src="https://www.ohloh.net/p/6670/widgets/project_thin_badge.js"></script>
    </div>
        </div>
    </footer>
    </body>
</html>