So you're writing a client application using GNU social's API; good for you! Unfortunately the down side of a federated system like ours is that you might need to work with many different GNU social sites on different domains, with different configuration… maybe even multiple sites used by the same user! So you can't just hardcode a single API endpoint URL into your software like you can for certain monolithic services…
The good news is that GNU social's API wants to help you find it… but you need to know what you're looking for, and when's the right time to go looking for it.
Once at account setup time:
Might want to check each session:
As of StatusNet 0.9.2 (plus or minus), the base URL for the Twitter-compatible API can be obtained using Really Simple Discovery. This is the same API discovery system that other tools like WordPress provide for blogging/microblogging protocol discovery:
First, find the <link rel=„EditURI“ type=„application/rsd+xml“> in the site's home page:
<link rel=„EditURI“ type=„application/rsd+xml“ href=„https://gnusocial.de/rsd.xml“/>
Pull that URL down and you'll get something kinda like this:
<?xml version="1.0" encoding="UTF-8"?> <rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd"> <service> <engineName>StatusNet</engineName> <engineLink>http://status.net/</engineLink> <apis> <api name="Twitter" preferred="true" apiLink="https://gnusocial.de/api/" blogID=""> <settings> <docs>http://status.net/wiki/TwitterCompatibleAPI</docs> <setting name="OAuth">true</setting> </settings> </api> <api name="Atom" preferred="false" apiLink="https://gnusocial.de/api/statusnet/app/service.xml" blogID=""></api> </apis> </service> </rsd>
Approximate path/selector: /rsd/service/apis/api[@name=„Twitter“]/@apiLink
This can provide very useful info about the server, the most important of which for a client is likely:
You can also find various useful info such as whether the site is marked as public or private, which may help in deciding whether to include a site in multi-service broadcast posts. Note that some data, including the character count, aren't available in older versions of StatusNet.
Here's a patch to Adium 1.4beta which provides an example of checking this data (Obj-C).
Version number, typically major.minor.patch, like „1.1.3-alpha666“.