JSPWiki comes with a XML-RPC interface.  For more information, see:

* [http://www.xmlrpc.com/]
* [JSPWiki:WikiRPCInterface]

!!XML-RPC Standard API

Here is now the API as of v1.6.12 (the command prefix being ''wiki.'').

The default URL for this API is <your-wiki-url>/RPC2

* __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'' (int) : 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

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 UTF-8 API

This is exactly as the upper API, except that ALL strings should be
encoded in UTF-8.  Also, instead of base64 type, all methods returning
page data return UTF-8 format strings.

This does break the XML-RPC spec somewhat, but for ease of use I think
it is important to serve both models.  Use which one you like :-).

The default URL for the UTF-8 XML-RPC API is

<your-wiki-url>/RPCU

!!Errors

All methods which handle a page in any way can return a Fault.  Current fault
codes are:

* 1 : No such page was found.