At line 1 changed one line |
wo |
This is an [XML-RPC] interface for Wikis, so that you can do all sorts of interesting scripting and stuff. For example, it has been used to do things like: |
|
* [provide an automatic system to send emails when pages change|EmailGenerator] |
* [print out all pages of a wiki for inclusion on portable devices|Hula] |
* Enable a wiki page to control the configuration of a complicated Python process. This supersedes a process wherein the person desiring changes had to ask an engineer to check out the code and add the info. |
---- |
|
|
!!API |
|
__Version 1__ API is as follows: |
|
* __array getRecentChanges( Date timestamp )__: Get list of changed pages since ''timestamp'', which should be in UTC. The result is an array, where each element is a struct: |
** ''name'' (string) : Name of the page. The name is UTF-8 with URL encoding to make it ASCII. |
** ''lastModified'' (date) : Date of last modification, in UTC. |
** ''author'' (string) : Name of the author (if available). Again, name is UTF-8 with URL encoding. |
** ''version'' (int) : Current version. |
* A page MAY be specified multiple times. A page MAY NOT be specified multiple |
times with the ''same'' modification date. |
|
* __int getRPCVersionSupported()__: Returns 1 with this version of the JSPWiki API. |
|
* __base64 getPage( String pagename )__: Get the raw Wiki text of page, latest version. Page name __must__ be UTF-8, with URL encoding. Returned value is a binary object, with UTF-8 encoded page data. |
|
* __base64 getPageVersion( String pagename, int version )__: Get the raw Wiki text of page. Returns UTF-8, expects UTF-8 with URL encoding. |
|
* __base64 getPageHTML( String pagename )__: Return page in rendered HTML. Returns UTF-8, expects UTF-8 with URL encoding. |
|
* __base64 getPageHTMLVersion( String pagename, int version )__: Return page in rendered HTML, UTF-8. |
|
* __array getAllPages()__: Returns a list of all pages. The result is an array of strings, again UTF-8 in URL encoding. |
|
* __struct getPageInfo( string pagename )__ : returns a struct with elements |
** ''name'' (string): the canonical page name, URL-encoded UTF-8. |
** ''lastModified'' (date): Last modification date, UTC. |
** ''author'' (string): author name, URL-encoded UTF-8. |
** ''version'' (int): current version |
|
* __struct getPageInfoVersion( string pagename, int version )__ : returns a |
struct just like plain ''getPageInfo()'', but this time for a specific |
version. |
|
* __array listLinks( string pagename )__: Lists all links for a given page. |
The returned array contains structs, with the following elements: |
** ''page'' (string) : The page name or URL the link is to. |
** ''type'' (string) : The link type. This is a string, with the following |
possible values: |
*** "external" : The link is an external hyperlink |
*** "local" : This is a local Wiki name for hyperlinking |
** ''href'' (string) : The HREF the link points to. Useful for finding this link within the HTML of this page. |
|
As you can see, all data is returned in a ''base64'' -type in UTF-8 encoding, regardless of what JSPWiki preference actually is. Also, all incoming or outcoming strings are really UTF-8, but they have been URL-encoded so that the XML-RPC requirement of ASCII is fulfilled. |
|
The URL is {{http://www.jspwiki.org/RPC2/}} (note the trailing slash). All methods are prepended with wiki. - for example, {{wiki.getAllPages()}} |
|
!Errors |
|
All methods which handle a page in any way can return a Fault. Current fault |
codes are: |
|
* 1 : No such page was found. |
|
!Troubleshooting |
You should make sure that XMLRPC is enabled in the deployment descriptor (WEB-INF/web.xml)\\ |
See comments there. |
|
!JSPWiki specific notes |
|
We also offer a non-spec compliant service at URL: |
|
{{http://www.jspwiki.org/RPCU/}} |
|
The XML-RPC service here is otherwise exactly the same as the one detailed above, except that all |
strings are considered to be UTF-8, and all methods that use base64, use strings. So, if you don't |
want to do any Base64-conversions for strings, just use the UTF-8 API. |
|
---- |
|
!!Related Code |
|
* A client Java API for this interface can be found at [Hula], as well as some sample apps. |
* A project to present this interface on top of existing Wiki's is noted at [Hoop]. |
* Also, see [EmailGenerator], [http://www.mahlen.org/jspwiki/], and [TouchGraphWikiBrowser]. |
|
---- |
|
!!Other implementations |
* [OpenWiki]: [http://www.protocol7.com/services/openwiki.asp] |
* [TWiki]: [http://www.decafbad.com/twiki/bin/view/Main/XmlRpcToWiki] |
* [UseModWiki]: [http://www.decafbad.com/twiki/bin/view/Main/XmlRpcToWiki] |
* [MoinMoin]: [http://www.decafbad.com/twiki/bin/view/Main/XmlRpcToWiki] |
* [PhpWiki]: [http://phpwiki.sourceforge.net/phpwiki-1.2/index.php?XmlRpc] |
|
---- |
|
!!Related Discussions |
|
* See [WikiRPCInterfaceUTF8VsBase64] for more on UTF-8 issues and time zone stuff. |
* See [WikiRPCInterfaceListLinks] for the discussion on the listLinks() method. |
* See [WikiRPCInterfaceDiscussion] for generic discussion about this interface. |
* See [WikiRPCInterface2] for discussion on the next version of the API. |
* [HowWikiComparesToRest|http://internet.conveyor.com/RESTwiki/moin.cgi/HowWikiComparesToRest] |
---- |
|
please try to coordinate this effort with other wikis, for example have a look at [http://meta.wikimedia.org/w/wiki.phtml?title=Machine-friendly_wiki_interface] and talk to the people there. |
|
-- AnonymousCoward |
|
Well, AFAIK this is the oldest API there is, so others should be co-ordinating with us ;-). Anyway, this API is pretty much obsolete. It's far better to use something like AtomPublishingProtocol. |
|
-- JanneJalkanen |