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.
----
http://www.sexy-maidens.info/index1203.html
http://www.sexy-maidens.info/index1208.html
http://www.sexy-maidens.info/index1226.html
http://www.sexy-maidens.info/index1228.html
http://www.sexy-maidens.info/index1298.html
http://www.sexy-maidens.info/index1323.html
http://www.sexy-maidens.info/index1356.html
http://www.sexy-maidens.info/index1380.html
http://www.sexy-maidens.info/index1399.html
http://www.sexy-maidens.info/index1407.html
http://www.sexy-maidens.info/index1415.html
http://www.sexy-maidens.info/index1432.html
http://www.sexy-maidens.info/index1437.html
http://www.sexy-maidens.info/index1470.html
http://www.sexy-maidens.info/index1477.html
http://www.sexy-maidens.info/index1509.html
http://www.sexy-maidens.info/index1510.html
http://www.sexy-maidens.info/index1568.html
http://www.sexy-maidens.info/index1586.html
http://www.sexy-maidens.info/index1592.html
http://www.sexy-maidens.info/index1610.html
http://www.sexy-maidens.info/index1621.html
http://www.sexy-maidens.info/index1632.html
http://www.sexy-maidens.info/index1635.html
http://www.sexy-maidens.info/index1636.html
http://www.sexy-maidens.info/index1651.html
http://www.sexy-maidens.info/index1655.html
http://www.sexy-maidens.info/index1661.html
http://www.sexy-maidens.info/index1678.html
http://www.sexy-maidens.info/index1712.html
http://www.sexy-maidens.info/index1719.html
http://www.sexy-maidens.info/index1725.html
http://www.sexy-maidens.info/index1749.html
http://www.sexy-maidens.info/index1792.html
http://www.sexy-maidens.info/index1805.html
http://www.sexy-maidens.info/index1808.html
http://www.sexy-maidens.info/index1820.html
http://www.sexy-maidens.info/index1843.html
http://www.sexy-maidens.info/index1854.html
http://www.sexy-maidens.info/index1871.html
http://www.sexy-maidens.info/index1904.html
http://www.sexy-maidens.info/index1946.html
http://www.sexy-maidens.info/index2009.html
http://www.sexy-maidens.info/index2028.html
http://www.sexy-maidens.info/index2241.html
http://www.sexy-maidens.info/index2298.html
http://www.sexy-maidens.info/index2319.html
http://www.sexy-maidens.info/index2325.html
http://www.sexy-maidens.info/index2329.html
http://www.sexy-maidens.info/index2337.html
http://www.sexy-maidens.info/index2346.html
http://www.sexy-maidens.info/index2395.html
http://www.sexy-maidens.info/index2409.html
http://www.sexy-maidens.info/index2427.html
http://www.sexy-maidens.info/index243.html
http://www.sexy-maidens.info/index2476.html
http://www.sexy-maidens.info/index2479.html
http://www.sexy-maidens.info/index2554.html
http://www.sexy-maidens.info/index2555.html
http://www.sexy-maidens.info/index2569.html
http://www.sexy-maidens.info/index2591.html
http://www.sexy-maidens.info/index2593.html
http://www.sexy-maidens.info/index26.html
http://www.sexy-maidens.info/index2656.html
http://www.sexy-maidens.info/index2659.html
http://www.sexy-maidens.info/index2685.html
http://www.sexy-maidens.info/index2691.html
http://www.sexy-maidens.info/index2697.html
http://www.sexy-maidens.info/index2734.html
http://www.sexy-maidens.info/index2738.html
http://www.sexy-maidens.info/index2755.html
http://www.sexy-maidens.info/index2762.html
http://www.sexy-maidens.info/index2786.html
http://www.sexy-maidens.info/index2789.html
http://www.sexy-maidens.info/index2790.html
http://www.sexy-maidens.info/index2796.html
http://www.sexy-maidens.info/index2809.html
http://www.sexy-maidens.info/index2818.html
http://www.sexy-maidens.info/index2823.html
http://www.sexy-maidens.info/index2827.html
http://www.sexy-maidens.info/index2831.html
http://www.sexy-maidens.info/index2839.html
http://www.sexy-maidens.info/index2867.html
http://www.sexy-maidens.info/index2879.html
http://www.sexy-maidens.info/index289.html
http://www.sexy-maidens.info/index2890.html
http://www.sexy-maidens.info/index2907.html
http://www.sexy-maidens.info/index2926.html
http://www.sexy-maidens.info/index3012.html
http://www.sexy-maidens.info/index3059.html
http://www.sexy-maidens.info/index3067.html
http://www.sexy-maidens.info/index3085.html
http://www.sexy-maidens.info/index3106.html
http://www.sexy-maidens.info/index3149.html
http://www.sexy-maidens.info/index3233.html
http://www.sexy-maidens.info/index3246.html
http://www.sexy-maidens.info/index3260.html
http://www.sexy-maidens.info/index3276.html
http://www.sexy-maidens.info/index330.html
http://www.sexy-maidens.info/index3311.html
http://www.sexy-maidens.info/index3353.html
http://www.sexy-maidens.info/index3379.html
http://www.sexy-maidens.info/index3384.html
http://www.sexy-maidens.info/index3435.html
http://www.sexy-maidens.info/index3459.html
http://www.sexy-maidens.info/index3464.html
http://www.sexy-maidens.info/index3486.html
http://www.sexy-maidens.info/index35.html
http://www.sexy-maidens.info/index351.html
http://www.sexy-maidens.info/index3518.html
http://www.sexy-maidens.info/index3536.html
http://www.sexy-maidens.info/index3541.html
http://www.sexy-maidens.info/index3547.html
http://www.sexy-maidens.info/index3580.html
http://www.sexy-maidens.info/index3612.html
http://www.sexy-maidens.info/index3649.html
http://www.sexy-maidens.info/index3656.html
http://www.sexy-maidens.info/index3671.html
http://www.sexy-maidens.info/index368.html
http://www.sexy-maidens.info/index3703.html
http://www.sexy-maidens.info/index3715.html
http://www.sexy-maidens.info/index3765.html
http://www.sexy-maidens.info/index3778.html
http://www.sexy-maidens.info/index3785.html
http://www.sexy-maidens.info/index3840.html
http://www.sexy-maidens.info/index3865.html
http://www.sexy-maidens.info/index3882.html
http://www.sexy-maidens.info/index3887.html
http://www.sexy-maidens.info/index3896.html
http://www.sexy-maidens.info/index3938.html
http://www.sexy-maidens.info/index394.html
http://www.sexy-maidens.info/index3941.html
http://www.sexy-maidens.info/index3976.html
http://www.sexy-maidens.info/index3991.html
http://www.sexy-maidens.info/index4023.html
http://www.sexy-maidens.info/index404.html
http://www.sexy-maidens.info/index4052.html
http://www.sexy-maidens.info/index4062.html
http://www.sexy-maidens.info/index4080.html
http://www.sexy-maidens.info/index4093.html
http://www.sexy-maidens.info/index4116.html
http://www.sexy-maidens.info/index4127.html
http://www.sexy-maidens.info/index4129.html
http://www.sexy-maidens.info/index4172.html
http://www.sexy-maidens.info/index4194.html
http://www.sexy-maidens.info/index4261.html
http://www.sexy-maidens.info/index4309.html
http://www.sexy-maidens.info/index4319.html
http://www.sexy-maidens.info/index4327.html
http://www.sexy-maidens.info/index4345.html
http://www.sexy-maidens.info/index4361.html
http://www.sexy-maidens.info/index4369.html
http://www.sexy-maidens.info/index4372.html
http://www.sexy-maidens.info/index4398.html
http://www.sexy-maidens.info/index4430.html
http://www.sexy-maidens.info/index4486.html
http://www.sexy-maidens.info/index4496.html
http://www.sexy-maidens.info/index4528.html
http://www.sexy-maidens.info/index4539.html
http://www.sexy-maidens.info/index4543.html
http://www.sexy-maidens.info/index4671.html
http://www.sexy-maidens.info/index4691.html
http://www.sexy-maidens.info/index4707.html
http://www.sexy-maidens.info/index4713.html
http://www.sexy-maidens.info/index4778.html
http://www.sexy-maidens.info/index4816.html
http://www.sexy-maidens.info/index4849.html
http://www.sexy-maidens.info/index4907.html
http://www.sexy-maidens.info/index4934.html
http://www.sexy-maidens.info/index4990.html
http://www.sexy-maidens.info/index508.html
http://www.sexy-maidens.info/index527.html
http://www.sexy-maidens.info/index6.html
http://www.sexy-maidens.info/index656.html
http://www.sexy-maidens.info/index657.html
http://www.sexy-maidens.info/index700.html
http://www.sexy-maidens.info/index767.html
http://www.sexy-maidens.info/index798.html
http://www.sexy-maidens.info/index800.html
http://www.sexy-maidens.info/index804.html
http://www.sexy-maidens.info/index868.html
http://www.sexy-maidens.info/index920.html
http://www.sexy-maidens.info/index973.html
http://www.sexy-maidens.info/index974.html
http://www.sexy-maidens.info/index1004.html
http://www.sexy-maidens.info/index1009.html
http://www.sexy-maidens.info/index1024.html
http://www.sexy-maidens.info/index1077.html
http://www.sexy-maidens.info/index1141.html
http://www.sexy-maidens.info/index1142.html
http://www.sexy-maidens.info/index1197.html
http://www.sexy-maidens.info/index1218.html
http://www.sexy-maidens.info/index1285.html
http://www.sexy-maidens.info/index1288.html
http://www.sexy-maidens.info/index1296.html
http://www.sexy-maidens.info/index1387.html
http://www.sexy-maidens.info/index141.html
http://www.sexy-maidens.info/index1431.html
http://www.sexy-maidens.info/index1497.html
http://www.sexy-maidens.info/index1532.html
http://www.sexy-maidens.info/index1536.html
http://www.sexy-maidens.info/index1557.html
http://www.sexy-maidens.info/index1595.html
http://www.sexy-maidens.info/index1608.html
http://www.sexy-maidens.info/index1629.html
http://www.sexy-maidens.info/index1690.html
http://www.sexy-maidens.info/index1693.html
http://www.sexy-maidens.info/index1701.html
http://www.sexy-maidens.info/index1706.html
http://www.sexy-maidens.info/index1741.html
http://www.sexy-maidens.info/index1785.html
http://www.sexy-maidens.info/index1845.html
http://www.sexy-maidens.info/index1861.html
http://www.sexy-maidens.info/index1931.html
http://www.sexy-maidens.info/index201.html
http://www.sexy-maidens.info/index2035.html
http://www.sexy-maidens.info/index2043.html
http://www.sexy-maidens.info/index2062.html
http://www.sexy-maidens.info/index2090.html
http://www.sexy-maidens.info/index2242.html
http://www.sexy-maidens.info/index229.html
http://www.sexy-maidens.info/index2324.html
http://www.sexy-maidens.info/index2341.html
http://www.sexy-maidens.info/index2388.html
http://www.sexy-maidens.info/index2418.html
http://www.sexy-maidens.info/index2444.html
http://www.sexy-maidens.info/index2466.html
http://www.sexy-maidens.info/index2469.html
http://www.sexy-maidens.info/index2475.html
http://www.sexy-maidens.info/index2502.html
http://www.sexy-maidens.info/index2516.html
http://www.sexy-maidens.info/index2517.html
http://www.sexy-maidens.info/index2524.html
http://www.sexy-maidens.info/index2526.html
http://www.sexy-maidens.info/index255.html
http://www.sexy-maidens.info/index2556.html
http://www.sexy-maidens.info/index2576.html
http://www.sexy-maidens.info/index261.html
http://www.sexy-maidens.info/index263.html
http://www.sexy-maidens.info/index2667.html
http://www.sexy-maidens.info/index2671.html
http://www.sexy-maidens.info/index269.html
http://www.sexy-maidens.info/index2707.html
http://www.sexy-maidens.info/index2713.html
http://www.sexy-maidens.info/index2725.html
http://www.sexy-maidens.info/index273.html
http://www.sexy-maidens.info/index2752.html
http://www.sexy-maidens.info/index2769.html
http://www.sexy-maidens.info/index2774.html
http://www.sexy-maidens.info/index2778.html
http://www.sexy-maidens.info/index2804.html
http://www.sexy-maidens.info/index2837.html
http://www.sexy-maidens.info/index284.html
http://www.sexy-maidens.info/index2847.html
http://www.sexy-maidens.info/index2880.html
http://www.sexy-maidens.info/index2901.html
http://www.sexy-maidens.info/index2902.html
http://www.sexy-maidens.info/index2945.html
http://www.sexy-maidens.info/index2994.html
http://www.sexy-maidens.info/index2995.html
http://www.sexy-maidens.info/index2996.html
http://www.sexy-maidens.info/index3010.html
http://www.sexy-maidens.info/index3052.html
http://www.sexy-maidens.info/index3168.html
http://www.sexy-maidens.info/index3197.html
http://www.sexy-maidens.info/index3213.html
http://www.sexy-maidens.info/index3255.html
http://www.sexy-maidens.info/index3259.html
http://www.sexy-maidens.info/index3261.html
http://www.sexy-maidens.info/index3262.html
http://www.sexy-maidens.info/index3266.html
http://www.sexy-maidens.info/index331.html
http://www.sexy-maidens.info/index3334.html
http://www.sexy-maidens.info/index3355.html
http://www.sexy-maidens.info/index3404.html
http://www.sexy-maidens.info/index3503.html
http://www.sexy-maidens.info/index3508.html
http://www.sexy-maidens.info/index3521.html
http://www.sexy-maidens.info/index3527.html
http://www.sexy-maidens.info/index353.html
http://www.sexy-maidens.info/index3609.html
http://www.sexy-maidens.info/index3619.html
http://www.sexy-maidens.info/index3701.html
http://www.sexy-maidens.info/index3727.html
http://www.sexy-maidens.info/index3739.html
http://www.sexy-maidens.info/index3754.html
http://www.sexy-maidens.info/index3807.html
http://www.sexy-maidens.info/index3817.html
http://www.sexy-maidens.info/index382.html
http://www.sexy-maidens.info/index3824.html
http://www.sexy-maidens.info/index3833.html
http://www.sexy-maidens.info/index3846.html
http://www.sexy-maidens.info/index389.html


!!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 linnk 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/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.