APIs and services have many different purposes, such as making it possible for people to easily contribute to sites from software (in the case of an XML-RPC service), or to easily implement code themselves.
RSD is an XML format that starting to become used by blogging software to expose the services that are supported by the software. This means being able to used exposed functions from other sites, and/or client applications installed on a PC or a Mac (or even a PDA!).
This doesn't need to mean it's a security risk though. By making sure that usage of the exposed function also requires a username and password (and maybe even an API key like flickr does) you can deter most people from using it without permission (it's the same as anything passworded, give them long enough and they could get in).
Below is an example of an RSD file based on what information is provided in the 1.0 specification.
<?xml version="1.0" encoding="utf-8"?>
<rsd version="1.0" xmlns="http://www.newearthonline.co.uk/rsd" >
<service>
<engineName>entity CMS</engineName>
<engineLink>http://www.newearthonline.co.uk/entity</engineLink>
<homePageLink>http://www.newearthonline.co.uk/</homePageLink>
<apis>
<api name="MetaWeblog" preferred="true" apiLink="http://example.com/xml/rpc/url" blogID="123abc" />
<api name="Blogger" preferred="false" apiLink="http://example.com/xml/rpc/url" blogID="123abc">
<settings>
<docs>http://www.newearthonline.co.uk/entity/docs/api</docs>
<notes>Additional explanation here.</notes>
<setting name="service-specific-setting">a value</setting>
<setting name="another-setting">another value</setting>
</settings>
</api>
</apis>
</service>
</rsd>
The first 2 lines inside the service tags are there to specify what blogging engine your website uses. This can be useful for anything that needs to be handled specifically with that engine. engineName specifies the name of software (which in my case is entity CMS), and is then followed by the engineLink tag that specifies where the blogging software can be found. Next up is the homepageLink tag - this is used to specify the homepage that the services belong to. For example, if I was to specify some exposed services then this would be my homepage as it's the site the RSD file is for.
After this comes the important stuff inside the apis tag. What lies inside here are api tags that specify the locations of the services, the name of them, the blogID, wether they are the preferred API, and any optional settings that it may have.
In the above example there are two different types of specification for an API. The first is the typical self-closing tag that specifies URL, name, blogID and preferred (all four of these attributes are required); whereas the second also contains information on where documentation for this API can be found, any notes that maybe appropriate for it, and any required settings.
Linking to this file is really easy too, it's done in the same way that you link to an RSS file.
<link rel="EditURI" type="application/rsd+xml" href="http://www.newearthonline.co.uk/rsd.xml" title="RSD" />
The defualt location that RSD files are looked for is in the root folder of your site. So in my case if I hadn't specified a location it could be assumed if I was using RSD that it would be located at http://www.newearthonline.co.uk/rsd.xml.













