<?xml version="1.0" encoding="UTF-8"?>
<page>
  <created-at type="datetime">2009-04-01T17:54:51Z</created-at>
  <description>Added in top-level link for members resource</description>
  <id type="integer">1203</id>
  <name>Home</name>
  <number type="integer">31</number>
  <person-id type="integer">62</person-id>
  <text>&lt;h1&gt;Kenai Web APIs&lt;/h1&gt;
This page provides both a list of links to the API reference documentation and an overview of common API features and conventions used to describe the APIs. For your convenience, the API Reference Documentation is listed first, but it's useful to read through the Overview the first time you come here to get an idea of how it all works.

One way to get started with the kenai.com APIs is to go to [http://kenai.com/api]. This URL displays the &lt;a href=&quot;{{project kenaiapis page MediaTypes}}#application/vnd.com.kenai.root+json&quot;&gt;root
service document&lt;/a&gt; from which most of the other resources are
available. You can click through links to drill down into
specific parts of the API and see what information is available.

'''Note:''' All clients must use the HTTPS protocol to access these APIs.

&lt;h2&gt; API Reference Documentation &lt;/h2&gt;
* [[Media Types]]
*[[ProjectsAPI|Project Resource]]
*[[AuthAPI|Authentication and Authorization API]]
*[[WikiAPI|Wiki Resource]]
*[[ForumsAPI|Forum Resource]]
*[[LicensesAPI|License Resource]]
*[[ServicesAPI|Service Resource]]
*[[MembersAPI | Member Resource]]

&lt;h2&gt;Overview &lt;/h2&gt;
__TOC__
=== Template===
Each resource or API description uses the following template.
{| border=&quot;1&quot;
|- valign=&quot;top&quot;
| Version
| 1.0 (versioning described below)
|- valign=&quot;top&quot;
| Authentication
| required|optional|unnecessary
|- valign=&quot;top&quot;
| URI
| &lt;tt&gt;/api/path/...&lt;/tt&gt;
|- valign=&quot;top&quot;
| Request
| GET /api/path?params&lt;br/&gt;
Content-Type: media type expected, if any
|- valign=&quot;top&quot;
| Response
| Success: 200 OK&lt;br/&gt;
Failure: 400 Bad Request
Content-Type: media type, if there is any response body
|}

=== Versioning===
Each API or resource will be versioned. Initially, for any
version 1 API, no version information will need to be specified. Any use
of the API will always default to version 1 if no version is
specified. 

==== Versioning Policy====
The API will have major and minor revision numbers (x.y). The minor
revision number will be incremented whenever a compatible change is
introduced. A compatible change is limited to the following:

* The introduction of a new resource, API, or method that does not affect existing resources/APIs
* The introduction of a new field or a new value for a field whose values are enumerated.

An incompatible change is any change or removal of resource URIs, APIs,
or methods, or structural modification or removal of the fields in the
payload representations.

==== Versions &gt; 1====
API versions will be specified in the hostname, so for example
&lt;tt&gt;&lt;nowiki&gt;http://v1.api.kenai.com/api/..&lt;/nowiki&gt;&lt;/tt&gt; will correspond to version 1 of the
API. Version 1 will also be available without any leading version
identifier in the hostname (e.g., &lt;tt&gt;&lt;nowiki&gt;http://kenai.com/api/...&lt;/nowiki&gt;&lt;/tt&gt;).

=== Representations===
The main machine-readable representation provided by the API is [http://www.json.org/ JSON].
However, the default representation is HTML with pretty-printed,
linked JSON for easy exploration.

To select JSON as the return format do one of the following:

* Append the &lt;tt&gt;.json&lt;/tt&gt; suffix to the URL. For example, &lt;tt&gt;[https://kenai.com/api/projects]&lt;/tt&gt; becomes &lt;tt&gt;[https://kenai.com/api/projects.json]&lt;/tt&gt;.
* Send &lt;tt&gt;application/json&lt;/tt&gt; in the HTTP Accept header as part of your request. For example:&lt;br/&gt;&lt;br/&gt;&lt;tt&gt; &amp;nbsp; Accept: application/json&lt;/tt&gt;

=== Common Parameters===
There are several common parameters that can be used in the query
string to modify behavior.

These parameters are available on all actions:

* &lt;tt&gt;callback=function_name&lt;/tt&gt; - [http://en.wikipedia.org/wiki/JSON#JSONP JSONP] will be returned with &lt;tt&gt;function_name(...)&lt;/tt&gt; wrapped around the JSON.
* &lt;tt&gt;pretty=true&lt;/tt&gt; - The JSON will be pretty-printed for more human-readable output.

These parameters are available on any resource list. (Resource lists
are denoted by a media type string whose noun is pluralized.)

* &lt;tt&gt;q=keyword&lt;/tt&gt; - Search or filter the list by the given keywords.
* &lt;tt&gt;page=page_number&lt;/tt&gt; - Specify the number of the page to show.
* &lt;tt&gt;size=num_results&lt;/tt&gt; - Specify the number of results per page.

=== Media Types===
[[Media types]] are the nouns of the system. They describe the
structure of the data passing in and out of the APIs. Media types are
indicated using the standard &lt;tt&gt;Content-Type&lt;/tt&gt; header in requests
and responses.

=== Resources vs. APIs===
In this document, we distinguish between resource APIs and
single-purpose APIs. 
*Resources are modeled after [http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-04.html#rfc.section.4 the Atom Publishing Protocol Model] and respond to the four HTTP verbs &lt;tt&gt;GET/POST/PUT/DELETE&lt;/tt&gt; in a uniform manner.
*Single-purpose APIs are narrow methods using &lt;tt&gt;GET&lt;/tt&gt; and/or &lt;tt&gt;POST&lt;/tt&gt; that don't fit into a create/read/update/delete collection.

=== Service Authentication===
Resources and API methods will accept HTTP basic authentication to
identify the user of the API. Whether the authentication is
required, optional, or unnecessary will be indicated with each resource
or API.

* In the cases where authentication is required, a failed authentication will return an HTTP status &lt;tt&gt;401 Unauthorized&lt;/tt&gt;.
* In the cases where authentication is optional, a successful authentication will reveal information that wouldn't be shown to an anonymous API user. Failed authentication will still return 401 for consistency.
* Unnecessary authentication means that sending credentials will have no effect on the response.

'''Note:''' It is  required that you use the HTTPS/SSL version
of the resource and API URLs so the credentials aren't exposed.

=== Errors===
Error responses will always be indicated first and foremost by the
HTTP status code. In accordance with HTTP, 4xx errors are the client's
fault while 5xx errors are the server's fault.

In the case of errors where a JSON format was requested (see above),
the JSON returned will always use the
&lt;a href=&quot;{{project kenaiapis page MediaTypes}}#application/vnd.com.kenai.status+json&quot;&gt;Status&lt;/a&gt; media
type.
</text>
  <text-as-html>&lt;p&gt;&lt;h1&gt;Kenai Web APIs&lt;/h1&gt;
This page provides both a list of links to the API reference documentation and an overview of common API features and conventions used to describe the APIs. For your convenience, the API Reference Documentation is listed first, but it's useful to read through the Overview the first time you come here to get an idea of how it all works.

&lt;/p&gt;&lt;p&gt;One way to get started with the kenai.com APIs is to go to &lt;a class='external' href=&quot;http://kenai.com/api&quot;&gt;http://kenai.com/api&lt;/a&gt;. This URL displays the &lt;a href=&quot;&lt;?url_for_resource project kenaiapis page MediaTypes?&gt;#application/vnd.com.kenai.root+json&quot;&gt;root
service document&lt;/a&gt; from which most of the other resources are
available. You can click through links to drill down into
specific parts of the API and see what information is available.

&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; All clients must use the HTTPS protocol to access these APIs.

&lt;/p&gt;&lt;p&gt;&lt;h2&gt; API Reference Documentation &lt;/h2&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page Media Types?&gt;' class='&lt;?class_for_page_link Media Types?&gt;'&gt;Media Types&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='&lt;?url_for_page ProjectsAPI?&gt;' class='&lt;?class_for_page_link ProjectsAPI?&gt;'&gt;Project Resource&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='&lt;?url_for_page AuthAPI?&gt;' class='&lt;?class_for_page_link AuthAPI?&gt;'&gt;Authentication and Authorization API&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='&lt;?url_for_page WikiAPI?&gt;' class='&lt;?class_for_page_link WikiAPI?&gt;'&gt;Wiki Resource&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='&lt;?url_for_page ForumsAPI?&gt;' class='&lt;?class_for_page_link ForumsAPI?&gt;'&gt;Forum Resource&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='&lt;?url_for_page LicensesAPI?&gt;' class='&lt;?class_for_page_link LicensesAPI?&gt;'&gt;License Resource&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='&lt;?url_for_page ServicesAPI?&gt;' class='&lt;?class_for_page_link ServicesAPI?&gt;'&gt;Service Resource&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='&lt;?url_for_page MembersAPI ?&gt;' class='&lt;?class_for_page_link MembersAPI ?&gt;'&gt; Member Resource&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;h2&gt;Overview &lt;/h2&gt;&lt;/p&gt;&lt;div id='toc' class='toc'&gt;
           &lt;div id='toctitle' class='toc-title'&gt;
             &lt;span&gt;Contents&lt;/span&gt;
           &lt;/div&gt;
           &lt;div id='toccontents' class='toc-contents'&gt;&lt;ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;1 &lt;a href='#Template'&gt; Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;2 &lt;a href='#Versioning'&gt; Versioning&lt;/a&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;2.1 &lt;a href='#Versioning_Policy'&gt; Versioning Policy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;2.2 &lt;a href='#Versions_&amp;gt;_1'&gt; Versions &amp;gt; 1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;3 &lt;a href='#Representations'&gt; Representations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;4 &lt;a href='#Common_Parameters'&gt; Common Parameters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;5 &lt;a href='#Media_Types'&gt; Media Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;6 &lt;a href='#Resources_vs._APIs'&gt; Resources vs. APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;7 &lt;a href='#Service_Authentication'&gt; Service Authentication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;8 &lt;a href='#Errors'&gt; Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;
         &lt;/div&gt;&lt;h3&gt;&lt;a name='Template'&gt;&lt;/a&gt; Template&lt;/h3&gt;
&lt;p&gt;Each resource or API description uses the following template.
&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table border=&quot;1&quot;&gt;&lt;tr valign=&quot;top&quot;&gt;&lt;td&gt; Version
&lt;/td&gt;&lt;td&gt; 1.0 (versioning described below)
&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;&lt;td&gt; Authentication
&lt;/td&gt;&lt;td&gt; required|optional|unnecessary
&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; &lt;tt&gt;/api/path/...&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;&lt;td&gt; Request
&lt;/td&gt;&lt;td&gt; GET /api/path?params&lt;br /&gt;
Content-Type: media type expected, if any
&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;&lt;td&gt; Response
&lt;/td&gt;&lt;td&gt; Success: 200 OK&lt;br /&gt;
Failure: 400 Bad Request
Content-Type: media type, if there is any response body
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h3&gt;&lt;a name='Versioning'&gt;&lt;/a&gt; Versioning&lt;/h3&gt;
&lt;p&gt;Each API or resource will be versioned. Initially, for any
version 1 API, no version information will need to be specified. Any use
of the API will always default to version 1 if no version is
specified. 

&lt;/p&gt;&lt;h4&gt;&lt;a name='Versioning_Policy'&gt;&lt;/a&gt; Versioning Policy&lt;/h4&gt;
&lt;p&gt;The API will have major and minor revision numbers (x.y). The minor
revision number will be incremented whenever a compatible change is
introduced. A compatible change is limited to the following:

&lt;/p&gt;&lt;ul&gt;&lt;li&gt; The introduction of a new resource, API, or method that does not affect existing resources/APIs
&lt;/li&gt;&lt;li&gt; The introduction of a new field or a new value for a field whose values are enumerated.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
An incompatible change is any change or removal of resource URIs, APIs,
or methods, or structural modification or removal of the fields in the
payload representations.

&lt;/p&gt;&lt;h4&gt;&lt;a name='Versions_&amp;gt;_1'&gt;&lt;/a&gt; Versions &amp;gt; 1&lt;/h4&gt;
&lt;p&gt;API versions will be specified in the hostname, so for example
&lt;tt&gt;http://v1.api.kenai.com/api/..&lt;/tt&gt; will correspond to version 1 of the
API. Version 1 will also be available without any leading version
identifier in the hostname (e.g., &lt;tt&gt;http://kenai.com/api/...&lt;/tt&gt;).

&lt;/p&gt;&lt;h3&gt;&lt;a name='Representations'&gt;&lt;/a&gt; Representations&lt;/h3&gt;
&lt;p&gt;The main machine-readable representation provided by the API is &lt;a class='external' href=&quot;http://www.json.org/&quot;&gt;JSON&lt;/a&gt;.
However, the default representation is HTML with pretty-printed,
linked JSON for easy exploration.

&lt;/p&gt;&lt;p&gt;To select JSON as the return format do one of the following:

&lt;/p&gt;&lt;ul&gt;&lt;li&gt; Append the &lt;tt&gt;.json&lt;/tt&gt; suffix to the URL. For example, &lt;tt&gt;&lt;a class='external' href=&quot;https://kenai.com/api/projects&quot;&gt;https://kenai.com/api/projects&lt;/a&gt;&lt;/tt&gt; becomes &lt;tt&gt;&lt;a class='external' href=&quot;https://kenai.com/api/projects.json&quot;&gt;https://kenai.com/api/projects.json&lt;/a&gt;&lt;/tt&gt;.
&lt;/li&gt;&lt;li&gt; Send &lt;tt&gt;application/json&lt;/tt&gt; in the HTTP Accept header as part of your request. For example:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt; &amp;nbsp; Accept: application/json&lt;/tt&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a name='Common_Parameters'&gt;&lt;/a&gt; Common Parameters&lt;/h3&gt;
&lt;p&gt;There are several common parameters that can be used in the query
string to modify behavior.

&lt;/p&gt;&lt;p&gt;These parameters are available on all actions:

&lt;/p&gt;&lt;ul&gt;&lt;li&gt; &lt;tt&gt;callback=function_name&lt;/tt&gt; - &lt;a class='external' href=&quot;http://en.wikipedia.org/wiki/JSON#JSONP&quot;&gt;JSONP&lt;/a&gt; will be returned with &lt;tt&gt;function_name(...)&lt;/tt&gt; wrapped around the JSON.
&lt;/li&gt;&lt;li&gt; &lt;tt&gt;pretty=true&lt;/tt&gt; - The JSON will be pretty-printed for more human-readable output.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
These parameters are available on any resource list. (Resource lists
are denoted by a media type string whose noun is pluralized.)

&lt;/p&gt;&lt;ul&gt;&lt;li&gt; &lt;tt&gt;q=keyword&lt;/tt&gt; - Search or filter the list by the given keywords.
&lt;/li&gt;&lt;li&gt; &lt;tt&gt;page=page_number&lt;/tt&gt; - Specify the number of the page to show.
&lt;/li&gt;&lt;li&gt; &lt;tt&gt;size=num_results&lt;/tt&gt; - Specify the number of results per page.
&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a name='Media_Types'&gt;&lt;/a&gt; Media Types&lt;/h3&gt;
&lt;p&gt;&lt;a href='&lt;?url_for_page Media types?&gt;' class='&lt;?class_for_page_link Media types?&gt;'&gt;Media types&lt;/a&gt; are the nouns of the system. They describe the
structure of the data passing in and out of the APIs. Media types are
indicated using the standard &lt;tt&gt;Content-Type&lt;/tt&gt; header in requests
and responses.

&lt;/p&gt;&lt;h3&gt;&lt;a name='Resources_vs._APIs'&gt;&lt;/a&gt; Resources vs. APIs&lt;/h3&gt;
&lt;p&gt;In this document, we distinguish between resource APIs and
single-purpose APIs. 
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Resources are modeled after &lt;a class='external' href=&quot;http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-04.html#rfc.section.4&quot;&gt;the Atom Publishing Protocol Model&lt;/a&gt; and respond to the four HTTP verbs &lt;tt&gt;GET/POST/PUT/DELETE&lt;/tt&gt; in a uniform manner.
&lt;/li&gt;&lt;li&gt;Single-purpose APIs are narrow methods using &lt;tt&gt;GET&lt;/tt&gt; and/or &lt;tt&gt;POST&lt;/tt&gt; that don't fit into a create/read/update/delete collection.
&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a name='Service_Authentication'&gt;&lt;/a&gt; Service Authentication&lt;/h3&gt;
&lt;p&gt;Resources and API methods will accept HTTP basic authentication to
identify the user of the API. Whether the authentication is
required, optional, or unnecessary will be indicated with each resource
or API.

&lt;/p&gt;&lt;ul&gt;&lt;li&gt; In the cases where authentication is required, a failed authentication will return an HTTP status &lt;tt&gt;401 Unauthorized&lt;/tt&gt;.
&lt;/li&gt;&lt;li&gt; In the cases where authentication is optional, a successful authentication will reveal information that wouldn't be shown to an anonymous API user. Failed authentication will still return 401 for consistency.
&lt;/li&gt;&lt;li&gt; Unnecessary authentication means that sending credentials will have no effect on the response.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; It is  required that you use the HTTPS/SSL version
of the resource and API URLs so the credentials aren't exposed.

&lt;/p&gt;&lt;h3&gt;&lt;a name='Errors'&gt;&lt;/a&gt; Errors&lt;/h3&gt;
&lt;p&gt;Error responses will always be indicated first and foremost by the
HTTP status code. In accordance with HTTP, 4xx errors are the client's
fault while 5xx errors are the server's fault.

&lt;/p&gt;&lt;p&gt;In the case of errors where a JSON format was requested (see above),
the JSON returned will always use the
&lt;a href=&quot;&lt;?url_for_resource project kenaiapis page MediaTypes?&gt;#application/vnd.com.kenai.status+json&quot;&gt;Status&lt;/a&gt; media
type.
&lt;/p&gt;</text-as-html>
  <updated-at type="datetime">2010-01-13T08:00:06Z</updated-at>
  <wiki-id type="integer">4686</wiki-id>
</page>
