http://wiki.sofurry.com/w/api.php?action=feedcontributions&user=Tetsudra&feedformat=atomSoFurry - User contributions [en]2024-03-29T12:41:04ZUser contributionsMediaWiki 1.31.12http://wiki.sofurry.com/w/index.php?title=API:GET_/submission/:id&diff=2162API:GET /submission/:id2016-05-15T14:28:54Z<p>Tetsudra: /* Response: Success */</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission/{id}<br />
<br />
= Request =<br />
<br />
GET /submission/5<br />
X-SoFurry-Token: 1:f23f4c181cc8b73a6b4b5d14b45ce79b<br />
{}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 2000000,<br />
"title": "Untitled Submission",<br />
"type": "image",<br />
"description": null,<br />
"guid": "d84018f3-06b8-497a-d37b-7f3b5fb2ee37",<br />
"rating": "clean",<br />
"original_url": "<nowiki>https://www.sofurryfiles.com/g/d84018f3-06b8-497a-d37b-7f3b5fb2ee37?version=original</nowiki>",<br />
"preview_url": "<nowiki>https://www.sofurryfiles.com/g/d84018f3-06b8-497a-d37b-7f3b5fb2ee37?version=preview</nowiki>",<br />
"processed_url": "<nowiki>https://www.sofurryfiles.com/g/d84018f3-06b8-497a-d37b-7f3b5fb2ee37?version=processed</nowiki>",<br />
"published_at": "2016-05-15 05:34:44",<br />
"tags": {<br />
"artist": [],<br />
"community": []<br />
},<br />
"allow": {<br />
"comments": "1",<br />
"likes": "1",<br />
"favorites": "1",<br />
"tags": "1"<br />
},<br />
"user": {<br />
"user_id": "1",<br />
"name": null,<br />
"slug": "bob"<br />
},<br />
"favorites": [],<br />
"likes": 0,<br />
"comments": [],<br />
"me": []<br />
}<br />
<br />
The resulting content will be a JSON object containing information about the submission<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:GET_/submission/:id&diff=2160API:GET /submission/:id2016-05-15T14:28:28Z<p>Tetsudra: /* Response: Success */</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission/{id}<br />
<br />
= Request =<br />
<br />
GET /submission/5<br />
X-SoFurry-Token: 1:f23f4c181cc8b73a6b4b5d14b45ce79b<br />
{}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 2000000,<br />
"title": "Untitled Submission",<br />
"type": "image",<br />
"description": null,<br />
"guid": "d84018f3-06b8-497a-d37b-7f3b5fb2ee37",<br />
"rating": "clean",<br />
"original_url": "https://www.sofurryfiles.com/g/d84018f3-06b8-497a-d37b-7f3b5fb2ee37?version=original",<br />
"preview_url": "https://www.sofurryfiles.com/g/d84018f3-06b8-497a-d37b-7f3b5fb2ee37?version=preview",<br />
"processed_url": "www.sofurryfiles.com/g/d84018f3-06b8-497a-d37b-7f3b5fb2ee37?version=processed",<br />
"published_at": "2016-05-15 05:34:44",<br />
"tags": {<br />
"artist": [],<br />
"community": []<br />
},<br />
"allow": {<br />
"comments": "1",<br />
"likes": "1",<br />
"favorites": "1",<br />
"tags": "1"<br />
},<br />
"user": {<br />
"user_id": "1",<br />
"name": null,<br />
"slug": "bob"<br />
},<br />
"favorites": [],<br />
"likes": 0,<br />
"comments": [],<br />
"me": []<br />
}<br />
<br />
The resulting content will be a JSON object containing information about the submission<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/submission&diff=2158API:POST /submission2016-05-15T14:26:31Z<p>Tetsudra: /* Request */</p>
<hr />
<div>This is the first step in uploading new content into SoFurry. First, a Submission record is created via this method. It is then populated using the PUT method.<br />
<br />
Note that this API endpoint is still under development. Among the upcoming changes:<br />
<br />
* Subtypes - be more specific about the type of image, for eg: image.jpg, story.pdf, music.mp3<br />
* Content URLs - the return object will have a URL to access the content directly<br />
* Resolved User - Instead of just an ID, return the full user profile object in the same call, under <code>user</code><br />
<br />
= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission<br />
<br />
= Request =<br />
<br />
POST /submission<br />
X-SoFurry-Token: 1:3e9ed5866113d0a5b95b4798f8e7db9a<br />
{<br />
"title": "My awesome artwork", # Required, String<br />
"type": "image", # Required, One of: image, music, story, flash, diary, photo, video<br />
"rating": "clean" # Required, One of: clean, mature, adult, extreme<br />
"description": "Some sample artwork", # Required, Max 8192 characters<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"user_id": 1,<br />
"title": "My awesome artwork",<br />
"type": "image",<br />
"description": "Some sample artwork",<br />
"visible": true,<br />
"rating": "clean",<br />
"guid": "f8a89ef6-34ac-a7a5-0c00-ad22165c46ba",<br />
"updated_at": "2016-04-25 13:23:41",<br />
"created_at": "2016-04-25 13:23:41",<br />
"id": 5<br />
}<br />
<br />
The result will be the submission object itself. Once the submission is created it needs to be populated with the PUT method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/user&diff=2156API:POST /user2016-05-15T14:25:58Z<p>Tetsudra: /* Request */</p>
<hr />
<div>= Resource URL =<br />
<br />
This method will register new users. If a user is successfully registered, an activation email will be sent containing the activation code.<br />
<br />
https://api.sofurrybeta.com/user<br />
<br />
= Request =<br />
<br />
POST /user<br />
{<br />
"username": "bob", # Required, Unique, Alphanumeric Only<br />
"birthdate": "1994-01-01", # Required, Date<br />
"email": "bob@example.org", # Required, Valid Email, Unique<br />
"password": "hunter2" # Required, Min 6 characters<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"result": true,<br />
"token": "Registration complete! Please check your inbox for your activation link"<br />
}<br />
<br />
If the result is TRUE, then the activation was a success. The corresponding user will now be able to log in with their username and password.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/login&diff=2154API:POST /login2016-05-15T14:25:35Z<p>Tetsudra: /* Request */</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/login<br />
<br />
= Request =<br />
<br />
POST /login<br />
{<br />
"username": "bob",<br />
"password": "hunter2"<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"result": true,<br />
"token": "1:fd776c3a631eeae849688a618887546d"<br />
}<br />
<br />
If the result is TRUE, then the login was a success. The token it returns should be sent on all future requests, using the <code>X-SoFurry-Token</code> HTTP header.<br />
<br />
= Response: Failed Login =<br />
<br />
HTTP 422<br />
{<br />
"result": false,<br />
"message": "Incorrect username or password"<br />
}<br />
<br />
You don't need to display that exact message in your client app. It will fail like this if the email address or password is incorrect, or if the user has not yet been activated.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2152API2016-05-15T14:25:23Z<p>Tetsudra: /* Authentication */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The SoFurry API is a stateless REST API, designed to work purely with JSON. For the nerdy, the underlying framework is [http://lumen.laravel.com/ Lumen 5.2]<br />
<br />
While the API is in development, along with the rest of SoFurry, the base URL will be http://api.sofurrybeta.com - once it changes over to production, the base URL will be https://api.sofurry.com<br />
<br />
To get started using the API, you won't need much - just some HTTP basics, and the ability to read and write JSON.<br />
<br />
= Making a simple API request =<br />
<br />
Here's how you might write some PHP to make an authenticated request to the API - for example, retrieving a submission.<br />
<br />
<code class="php">// We're doing: GET /submission/5<br />
$ch = curl_init("<nowiki>http://api.sofurrybeta.com/submission/5</nowiki>");<br />
<br />
// GET, POST, PUT, DELETE are all used in some form or another<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
<br />
// Add our authentication token, and ensure the request is sent<br />
// with the correct content type (which is just good practice)<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json', <br />
'X-SoFurry-Token: 1:cbe30d2d960b4b5eb65ababdf79eb6b1'<br />
]);<br />
<br />
// We need to see the resulting content<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
<br />
// Run the request<br />
$json = curl_exec($ch);<br />
<br />
// Check the HTTP code we got back from the server<br />
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);<br />
<br />
if ($http_code == 200)<br />
{<br />
// Our request was successful!<br />
<br />
// Decode the JSON into a usable object<br />
$submission = json_decode($json);<br />
<br />
// And do something with it<br />
echo $submission->title; // "My awesome artwork"<br />
<br />
}<br />
else<br />
{<br />
// Something went wrong! we'll have an error message here.<br />
// If $http_code is 422, it usually means you sent something incorrectly<br />
// HTTP 404 means you're looking for a resource you either can't see, or that doesn't exist<br />
// HTTP 500 means there's a temporary server issue<br />
}<br />
</code><br />
<br />
If you're unable to access the API over HTTPS, and you're using PHP, you might not have a CA bundle installed. See http://php.net/manual/en/function.curl-setopt.php#110457 for a solution to that.<br />
<br />
= Authentication =<br />
<br />
To login to SoFurry, you'd POST your username and password to an endpoint, then use the token it issues in future requests. Here's how you might log in using PHP:<br />
<br />
<code class="php">// Logging into SoFurry<br />
$ch = curl_init("<nowiki>http://api.sofurry.com/login</nowiki>");<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "username": "tetsudra", "password": "ableist1353" }');<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json'<br />
]);<br />
<br />
$json = curl_exec($ch);<br />
$login = json_decode($json);<br />
<br />
if ($login->result)<br />
$token = $login->token;</code><br />
<br />
Now that you've got your $token, you can use it to authenticate future requests, by adding it with the X-SoFurry-Token header.<br />
<br />
<code class="php">// Retrieving the user you're logged in as<br />
$ch = curl_init("<nowiki>http://api.sofurry.com/user</nowiki>");<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json',<br />
'X-SoFurry-Token: 1:e99568fcbfde573385e1fff301e5e41b'<br />
]);<br />
<br />
$json = curl_exec($ch);<br />
$user = json_decode($json);<br />
<br />
echo $user->email; // drgn@tetsudra.com</code><br />
<br />
You'll need to be authenticated in order to almost anything of value on SoFurry.<br />
<br />
''Note'' Logging in will invalidate all previous tokens!<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2130API2016-04-25T18:16:10Z<p>Tetsudra: /* Authentication */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The SoFurry API is a stateless REST API, designed to work purely with JSON. For the nerdy, the underlying framework is [http://lumen.laravel.com/ Lumen 5.2]<br />
<br />
While the API is in development, along with the rest of SoFurry, the base URL will be http://api.sofurrybeta.com - once it changes over to production, the base URL will be https://api.sofurry.com<br />
<br />
To get started using the API, you won't need much - just some HTTP basics, and the ability to read and write JSON.<br />
<br />
= Making a simple API request =<br />
<br />
Here's how you might write some PHP to make an authenticated request to the API - for example, retrieving a submission.<br />
<br />
<code class="php">// We're doing: GET /submission/5<br />
$ch = curl_init("<nowiki>http://api.sofurrybeta.com/submission/5</nowiki>");<br />
<br />
// GET, POST, PUT, DELETE are all used in some form or another<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
<br />
// Add our authentication token, and ensure the request is sent<br />
// with the correct content type (which is just good practice)<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json', <br />
'X-SoFurry-Token: 1:cbe30d2d960b4b5eb65ababdf79eb6b1'<br />
]);<br />
<br />
// We need to see the resulting content<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
<br />
// Run the request<br />
$json = curl_exec($ch);<br />
<br />
// Check the HTTP code we got back from the server<br />
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);<br />
<br />
if ($http_code == 200)<br />
{<br />
// Our request was successful!<br />
<br />
// Decode the JSON into a usable object<br />
$submission = json_decode($json);<br />
<br />
// And do something with it<br />
echo $submission->title; // "My awesome artwork"<br />
<br />
}<br />
else<br />
{<br />
// Something went wrong! we'll have an error message here.<br />
// If $http_code is 422, it usually means you sent something incorrectly<br />
// HTTP 404 means you're looking for a resource you either can't see, or that doesn't exist<br />
// HTTP 500 means there's a temporary server issue<br />
}<br />
</code><br />
<br />
If you're unable to access the API over HTTPS, and you're using PHP, you might not have a CA bundle installed. See http://php.net/manual/en/function.curl-setopt.php#110457 for a solution to that.<br />
<br />
= Authentication =<br />
<br />
To login to SoFurry, you'd POST your username and password to an endpoint, then use the token it issues in future requests. Here's how you might log in using PHP:<br />
<br />
<code class="php">// Logging into SoFurry<br />
$ch = curl_init("<nowiki>http://api.sofurry.com/login</nowiki>");<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "email": "drgn@tetsudra.com", "password": "ableist1353" }');<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json'<br />
]);<br />
<br />
$json = curl_exec($ch);<br />
$login = json_decode($json);<br />
<br />
if ($login->result)<br />
$token = $login->token;</code><br />
<br />
Now that you've got your $token, you can use it to authenticate future requests, by adding it with the X-SoFurry-Token header.<br />
<br />
<code class="php">// Retrieving the user you're logged in as<br />
$ch = curl_init("<nowiki>http://api.sofurry.com/user</nowiki>");<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json',<br />
'X-SoFurry-Token: 1:e99568fcbfde573385e1fff301e5e41b'<br />
]);<br />
<br />
$json = curl_exec($ch);<br />
$user = json_decode($json);<br />
<br />
echo $user->email; // drgn@tetsudra.com</code><br />
<br />
You'll need to be authenticated in order to almost anything of value on SoFurry.<br />
<br />
''Note'' Logging in will invalidate all previous tokens!<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2114API2016-04-25T14:11:31Z<p>Tetsudra: /* Authentication */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The SoFurry API is a stateless REST API, designed to work purely with JSON. For the nerdy, the underlying framework is [http://lumen.laravel.com/ Lumen 5.2]<br />
<br />
While the API is in development, along with the rest of SoFurry, the base URL will be http://api.sofurrybeta.com - once it changes over to production, the base URL will be https://api.sofurry.com<br />
<br />
To get started using the API, you won't need much - just some HTTP basics, and the ability to read and write JSON.<br />
<br />
= Making a simple API request =<br />
<br />
Here's how you might write some PHP to make an authenticated request to the API - for example, retrieving a submission.<br />
<br />
// We're doing: GET /submission/5<br />
$ch = curl_init("<nowiki>http://api.sofurrybeta.com/submission/5</nowiki>");<br />
<br />
// GET, POST, PUT, DELETE are all used in some form or another<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
<br />
// Add our authentication token, and ensure the request is sent<br />
// with the correct content type (which is just good practice)<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json', <br />
'X-SoFurry-Token: 1:cbe30d2d960b4b5eb65ababdf79eb6b1'<br />
]);<br />
<br />
// We need to see the resulting content<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
<br />
// Run the request<br />
$json = curl_exec($ch);<br />
<br />
// Check the HTTP code we got back from the server<br />
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);<br />
<br />
if ($http_code == 200)<br />
{<br />
// Our request was successful!<br />
<br />
// Decode the JSON into a usable object<br />
$submission = json_decode($json);<br />
<br />
// And do something with it<br />
echo $submission->title; // "My awesome artwork"<br />
<br />
}<br />
else<br />
{<br />
// Something went wrong! we'll have an error message here.<br />
// If $http_code is 422, it usually means you sent something incorrectly<br />
// HTTP 404 means you're looking for a resource you either can't see, or that doesn't exist<br />
// HTTP 500 means there's a temporary server issue<br />
}<br />
<br />
If you're unable to access the API over HTTPS, and you're using PHP, you might not have a CA bundle installed. See http://php.net/manual/en/function.curl-setopt.php#110457 for a solution to that.<br />
<br />
= Authentication =<br />
<br />
To login to SoFurry, you'd POST your username and password to an endpoint, then use the token it issues in future requests. Here's how you might log in using PHP:<br />
<br />
// Logging into SoFurry<br />
$ch = curl_init("<nowiki>http://api.sofurry.com/login</nowiki>");<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "email": "drgn@tetsudra.com", "password": "ableist1353" }');<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json'<br />
]);<br />
<br />
$json = curl_exec($ch);<br />
$login = json_decode($json);<br />
<br />
if ($login->result)<br />
$token = $login->token;<br />
<br />
Now that you've got your $token, you can use it to authenticate future requests, by adding it with the X-SoFurry-Token header.<br />
<br />
// Retrieving the user you're logged in as<br />
$ch = curl_init("<nowiki>http://api.sofurry.com/user</nowiki>");<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json',<br />
'X-SoFurry-Token: 1:e99568fcbfde573385e1fff301e5e41b'<br />
]);<br />
<br />
$json = curl_exec($ch);<br />
$user = json_decode($json);<br />
<br />
echo $user->email; // drgn@tetsudra.com<br />
<br />
You'll need to be authenticated in order to almost anything of value on SoFurry.<br />
<br />
''Note'' Logging in will invalidate all previous tokens!<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2112API2016-04-25T14:10:55Z<p>Tetsudra: /* Authentication */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The SoFurry API is a stateless REST API, designed to work purely with JSON. For the nerdy, the underlying framework is [http://lumen.laravel.com/ Lumen 5.2]<br />
<br />
While the API is in development, along with the rest of SoFurry, the base URL will be http://api.sofurrybeta.com - once it changes over to production, the base URL will be https://api.sofurry.com<br />
<br />
To get started using the API, you won't need much - just some HTTP basics, and the ability to read and write JSON.<br />
<br />
= Making a simple API request =<br />
<br />
Here's how you might write some PHP to make an authenticated request to the API - for example, retrieving a submission.<br />
<br />
// We're doing: GET /submission/5<br />
$ch = curl_init("<nowiki>http://api.sofurrybeta.com/submission/5</nowiki>");<br />
<br />
// GET, POST, PUT, DELETE are all used in some form or another<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
<br />
// Add our authentication token, and ensure the request is sent<br />
// with the correct content type (which is just good practice)<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json', <br />
'X-SoFurry-Token: 1:cbe30d2d960b4b5eb65ababdf79eb6b1'<br />
]);<br />
<br />
// We need to see the resulting content<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
<br />
// Run the request<br />
$json = curl_exec($ch);<br />
<br />
// Check the HTTP code we got back from the server<br />
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);<br />
<br />
if ($http_code == 200)<br />
{<br />
// Our request was successful!<br />
<br />
// Decode the JSON into a usable object<br />
$submission = json_decode($json);<br />
<br />
// And do something with it<br />
echo $submission->title; // "My awesome artwork"<br />
<br />
}<br />
else<br />
{<br />
// Something went wrong! we'll have an error message here.<br />
// If $http_code is 422, it usually means you sent something incorrectly<br />
// HTTP 404 means you're looking for a resource you either can't see, or that doesn't exist<br />
// HTTP 500 means there's a temporary server issue<br />
}<br />
<br />
If you're unable to access the API over HTTPS, and you're using PHP, you might not have a CA bundle installed. See http://php.net/manual/en/function.curl-setopt.php#110457 for a solution to that.<br />
<br />
= Authentication =<br />
<br />
To login to SoFurry, you'd POST your username and password to an endpoint, then use the token it issues in future requests. Here's how you might log in using PHP:<br />
<br />
// Logging into SoFurry<br />
$ch = curl_init("http://api.sofurry.com/login");<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "email": "drgn@tetsudra.com", "password": "ableist1353" }');<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json'<br />
]);<br />
<br />
$json = curl_exec($ch);<br />
$login = json_decode($json);<br />
<br />
if ($login->result)<br />
$token = $login->token;<br />
<br />
Now that you've got your $token, you can use it to authenticate future requests, by adding it with the X-SoFurry-Token header.<br />
<br />
// Retrieving the user you're logged in as<br />
$ch = curl_init("https://sfx-api-tetsudra.c9users.io/user");<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json',<br />
'X-SoFurry-Token: 1:e99568fcbfde573385e1fff301e5e41b'<br />
]);<br />
<br />
$json = curl_exec($ch);<br />
$user = json_decode($json);<br />
<br />
echo $user->email; // drgn@tetsudra.com<br />
<br />
You'll need to be authenticated in order to almost anything of value on SoFurry.<br />
<br />
''Note'' Logging in will invalidate all previous tokens!<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2110API2016-04-25T14:10:36Z<p>Tetsudra: /* Authentication */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The SoFurry API is a stateless REST API, designed to work purely with JSON. For the nerdy, the underlying framework is [http://lumen.laravel.com/ Lumen 5.2]<br />
<br />
While the API is in development, along with the rest of SoFurry, the base URL will be http://api.sofurrybeta.com - once it changes over to production, the base URL will be https://api.sofurry.com<br />
<br />
To get started using the API, you won't need much - just some HTTP basics, and the ability to read and write JSON.<br />
<br />
= Making a simple API request =<br />
<br />
Here's how you might write some PHP to make an authenticated request to the API - for example, retrieving a submission.<br />
<br />
// We're doing: GET /submission/5<br />
$ch = curl_init("<nowiki>http://api.sofurrybeta.com/submission/5</nowiki>");<br />
<br />
// GET, POST, PUT, DELETE are all used in some form or another<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
<br />
// Add our authentication token, and ensure the request is sent<br />
// with the correct content type (which is just good practice)<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json', <br />
'X-SoFurry-Token: 1:cbe30d2d960b4b5eb65ababdf79eb6b1'<br />
]);<br />
<br />
// We need to see the resulting content<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
<br />
// Run the request<br />
$json = curl_exec($ch);<br />
<br />
// Check the HTTP code we got back from the server<br />
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);<br />
<br />
if ($http_code == 200)<br />
{<br />
// Our request was successful!<br />
<br />
// Decode the JSON into a usable object<br />
$submission = json_decode($json);<br />
<br />
// And do something with it<br />
echo $submission->title; // "My awesome artwork"<br />
<br />
}<br />
else<br />
{<br />
// Something went wrong! we'll have an error message here.<br />
// If $http_code is 422, it usually means you sent something incorrectly<br />
// HTTP 404 means you're looking for a resource you either can't see, or that doesn't exist<br />
// HTTP 500 means there's a temporary server issue<br />
}<br />
<br />
If you're unable to access the API over HTTPS, and you're using PHP, you might not have a CA bundle installed. See http://php.net/manual/en/function.curl-setopt.php#110457 for a solution to that.<br />
<br />
= Authentication =<br />
<br />
To login to SoFurry, you'd POST your username and password to an endpoint, then use the token it issues in future requests. Here's how you might log in using PHP:<br />
<br />
// Logging into SoFurry<br />
$ch = curl_init("http://api.sofurry.com/login");<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "email": "drgn@tetsudra.com", "password": "ableist1353" }');<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json'<br />
]);<br />
<br />
$json = curl_exec($ch);<br />
$login = json_decode($json);<br />
<br />
if ($login->result)<br />
$token = $login->token;<br />
<br />
Now that you've got your $token, you can use it to authenticate future requests, by adding it with the X-SoFurry-Token header.<br />
<br />
// Retrieving the user you're logged in as<br />
$ch = curl_init("https://sfx-api-tetsudra.c9users.io/user");<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json',<br />
'X-SoFurry-Token: 1:e99568fcbfde573385e1fff301e5e41b'<br />
]);<br />
<br />
$json = curl_exec($ch);<br />
$user = json_decode($json);<br />
<br />
echo $user->email; // drgn@tetsudra.com<br />
<br />
You'll need to be authenticated in order to almost anything of value on SoFurry.<br />
<br />
*Note* Logging in will invalidate all previous tokens!<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2108API2016-04-25T14:02:57Z<p>Tetsudra: /* Making a simple API request */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The SoFurry API is a stateless REST API, designed to work purely with JSON. For the nerdy, the underlying framework is [http://lumen.laravel.com/ Lumen 5.2]<br />
<br />
While the API is in development, along with the rest of SoFurry, the base URL will be http://api.sofurrybeta.com - once it changes over to production, the base URL will be https://api.sofurry.com<br />
<br />
To get started using the API, you won't need much - just some HTTP basics, and the ability to read and write JSON.<br />
<br />
= Making a simple API request =<br />
<br />
Here's how you might write some PHP to make an authenticated request to the API - for example, retrieving a submission.<br />
<br />
// We're doing: GET /submission/5<br />
$ch = curl_init("<nowiki>http://api.sofurrybeta.com/submission/5</nowiki>");<br />
<br />
// GET, POST, PUT, DELETE are all used in some form or another<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
<br />
// Add our authentication token, and ensure the request is sent<br />
// with the correct content type (which is just good practice)<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json', <br />
'X-SoFurry-Token: 1:cbe30d2d960b4b5eb65ababdf79eb6b1'<br />
]);<br />
<br />
// We need to see the resulting content<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
<br />
// Run the request<br />
$json = curl_exec($ch);<br />
<br />
// Check the HTTP code we got back from the server<br />
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);<br />
<br />
if ($http_code == 200)<br />
{<br />
// Our request was successful!<br />
<br />
// Decode the JSON into a usable object<br />
$submission = json_decode($json);<br />
<br />
// And do something with it<br />
echo $submission->title; // "My awesome artwork"<br />
<br />
}<br />
else<br />
{<br />
// Something went wrong! we'll have an error message here.<br />
// If $http_code is 422, it usually means you sent something incorrectly<br />
// HTTP 404 means you're looking for a resource you either can't see, or that doesn't exist<br />
// HTTP 500 means there's a temporary server issue<br />
}<br />
<br />
If you're unable to access the API over HTTPS, and you're using PHP, you might not have a CA bundle installed. See http://php.net/manual/en/function.curl-setopt.php#110457 for a solution to that.<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2106API2016-04-25T14:02:29Z<p>Tetsudra: /* Making a simple API request */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The SoFurry API is a stateless REST API, designed to work purely with JSON. For the nerdy, the underlying framework is [http://lumen.laravel.com/ Lumen 5.2]<br />
<br />
While the API is in development, along with the rest of SoFurry, the base URL will be http://api.sofurrybeta.com - once it changes over to production, the base URL will be https://api.sofurry.com<br />
<br />
To get started using the API, you won't need much - just some HTTP basics, and the ability to read and write JSON.<br />
<br />
= Making a simple API request =<br />
<br />
Here's how you might write some PHP to make an authenticated request to the API - for example, retrieving a submission.<br />
<br />
// We're doing: GET /submission/5<br />
$ch = curl_init("http://api.sofurrybeta.com/submission/5");<br />
<br />
// GET, POST, PUT, DELETE are all used in some form or another<br />
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");<br />
<br />
// Add our authentication token, and ensure the request is sent<br />
// with the correct content type (which is just good practice)<br />
curl_setopt($ch, CURLOPT_HTTPHEADER, [<br />
'Content-Type: application/json', <br />
'X-SoFurry-Token: 1:cbe30d2d960b4b5eb65ababdf79eb6b1'<br />
]);<br />
<br />
// We need to see the resulting content<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
<br />
// Run the request<br />
$json = curl_exec($ch);<br />
<br />
// Check the HTTP code we got back from the server<br />
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);<br />
<br />
if ($http_code == 200)<br />
{<br />
// Our request was successful!<br />
<br />
// Decode the JSON into a usable object<br />
$submission = json_decode($json);<br />
<br />
// And do something with it<br />
echo $submission->title; // "My awesome artwork"<br />
<br />
}<br />
else<br />
{<br />
// Something went wrong! we'll have an error message here.<br />
// If $http_code is 422, it usually means you sent something incorrectly<br />
// HTTP 404 means you're looking for a resource you either can't see, or that doesn't exist<br />
// HTTP 500 means there's a temporary server issue<br />
}<br />
<br />
If you're unable to access the API over HTTPS, and you're using PHP, you might not have a CA bundle installed. See http://php.net/manual/en/function.curl-setopt.php#110457 for a solution to that.<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2104API2016-04-25T13:46:16Z<p>Tetsudra: /* About the API */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The SoFurry API is a stateless REST API, designed to work purely with JSON. For the nerdy, the underlying framework is [http://lumen.laravel.com/ Lumen 5.2]<br />
<br />
While the API is in development, along with the rest of SoFurry, the base URL will be http://api.sofurrybeta.com - once it changes over to production, the base URL will be https://api.sofurry.com<br />
<br />
To get started using the API, you won't need much - just some HTTP basics, and the ability to read and write JSON.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2102API2016-04-25T13:44:39Z<p>Tetsudra: /* About the API */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The SoFurry API is a stateless REST API, designed to work purely with JSON. For the nerdy, the underlying framework is [http://lumen.laravel.com/| Lumen 5.2]<br />
<br />
While the API is in development, along with the rest of SoFurry, the base URL will be http://api.sofurrybeta.com - once it changes over to production, the base URL will be https://api.sofurry.com<br />
<br />
To get started using the API, you won't need much - just some HTTP basics, and the ability to read and write JSON.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2100API2016-04-25T13:44:26Z<p>Tetsudra: /* About the API */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The SoFurry API is a stateless REST API, designed to work purely with JSON. For the nerdy, the underlying framework is [[http://lumen.laravel.com/|Lumen 5.2]]<br />
<br />
While the API is in development, along with the rest of SoFurry, the base URL will be http://api.sofurrybeta.com - once it changes over to production, the base URL will be https://api.sofurry.com<br />
<br />
To get started using the API, you won't need much - just some HTTP basics, and the ability to read and write JSON.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2098API2016-04-25T13:44:05Z<p>Tetsudra: /* About the API */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The SoFurry API is a stateless REST API, designed to work purely with JSON. For the nerdy, the underlying framework is [http://lumen.laravel.com/|Lumen 5.2]<br />
<br />
While the API is in development, along with the rest of SoFurry, the base URL will be http://api.sofurrybeta.com - once it changes over to production, the base URL will be https://api.sofurry.com<br />
<br />
To get started using the API, you won't need much - just some HTTP basics, and the ability to read and write JSON.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:GET_/submission/:id&diff=2096API:GET /submission/:id2016-04-25T13:38:33Z<p>Tetsudra: /* Response: Success */</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission/{id}<br />
<br />
= Request =<br />
<br />
GET /submission/5<br />
X-SoFurry-Token: 1:f23f4c181cc8b73a6b4b5d14b45ce79b<br />
{}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 5,<br />
"user_id": "1",<br />
"title": "My awesome artwork",<br />
"type": "image",<br />
"description": "Some sample artwork",<br />
"guid": "f8a89ef6-34ac-a7a5-0c00-ad22165c46ba",<br />
"visible": "1",<br />
"reported": "0",<br />
"hold": "0",<br />
"rating": "clean",<br />
"created_at": "2016-04-25 13:23:41",<br />
"updated_at": "2016-04-25 13:29:25",<br />
"url": "<nowiki>http://sfx-api-tetsudra.c9users.io/devgetcontent/70bee5de-a96e-9c45-fd7e-e6e92d3ee6cd.png</nowiki>"<br />
}<br />
<br />
The resulting content will be a JSON object containing information about the submission<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:GET_/submission/:id&diff=2094API:GET /submission/:id2016-04-25T13:37:59Z<p>Tetsudra: Created page with "= Resource URL = https://api.sofurrybeta.com/submission/{id} = Request = GET /submission/5 X-SoFurry-Token: 1:f23f4c181cc8b73a6b4b5d14b45ce79b {} = Response: Success =..."</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission/{id}<br />
<br />
= Request =<br />
<br />
GET /submission/5<br />
X-SoFurry-Token: 1:f23f4c181cc8b73a6b4b5d14b45ce79b<br />
{}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 5,<br />
"user_id": "1",<br />
"title": "My awesome artwork",<br />
"type": "image",<br />
"description": "Some sample artwork",<br />
"guid": "f8a89ef6-34ac-a7a5-0c00-ad22165c46ba",<br />
"visible": "1",<br />
"reported": "0",<br />
"hold": "0",<br />
"rating": "clean",<br />
"created_at": "2016-04-25 13:23:41",<br />
"updated_at": "2016-04-25 13:29:25",<br />
"url": "http://sfx-api-tetsudra.c9users.io/devgetcontent/70bee5de-a96e-9c45-fd7e-e6e92d3ee6cd.png"<br />
}<br />
<br />
The resulting content will be a JSON object containing information about the submission<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:PUT_/submission/:id/content&diff=2092API:PUT /submission/:id/content2016-04-25T13:35:08Z<p>Tetsudra: /* Response: Success */</p>
<hr />
<div>This endpoint lets you push actual content into the submission.<br />
<br />
This endpoint is under development, with the following underlying changes pending:<br />
<br />
* Subtype processing pipelines - different file types will be handled and stored differently by the API.<br />
* Versioning - Every PUT to this endpoint will serve the latest version, but prior versions can be stored and accessed<br />
* URL array:<br />
** Original URL - to refer to the original file<br />
** Processed URL - to point to a rendered/processed version of the content. For example: A large JPG resized down, or a markdown file parsed into HTML<br />
** Preview URL - A url to a small square image to be used when previewing the content<br />
<br />
= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission/{id}/content<br />
<br />
= Request =<br />
<br />
PUT /submission/{id}/content<br />
X-SoFurry-Token: 1:3e9ed5866113d0a5b95b4798f8e7db9a<br />
(binary stream)<br />
<br />
The request body is just pure binary content - no fields or formats.<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 5,<br />
"user_id": "1",<br />
"title": "My awesome artwork",<br />
"type": "image",<br />
"description": "Some sample artwork",<br />
"guid": "f8a89ef6-34ac-a7a5-0c00-ad22165c46ba",<br />
"visible": "1",<br />
"reported": "0",<br />
"hold": "0",<br />
"rating": "clean",<br />
"created_at": "2016-04-25 13:23:41",<br />
"updated_at": "2016-04-25 13:29:25",<br />
"url": "<nowiki>http://sfx-api-tetsudra.c9users.io/devgetcontent/70bee5de-a96e-9c45-fd7e-e6e92d3ee6cd.png</nowiki>"<br />
}<br />
<br />
The result will be the submission object, along with a URL to view the submission.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:PUT_/submission/:id/content&diff=2090API:PUT /submission/:id/content2016-04-25T13:33:46Z<p>Tetsudra: /* Response: Success */</p>
<hr />
<div>This endpoint lets you push actual content into the submission.<br />
<br />
This endpoint is under development, with the following underlying changes pending:<br />
<br />
* Subtype processing pipelines - different file types will be handled and stored differently by the API.<br />
* Versioning - Every PUT to this endpoint will serve the latest version, but prior versions can be stored and accessed<br />
* URL array:<br />
** Original URL - to refer to the original file<br />
** Processed URL - to point to a rendered/processed version of the content. For example: A large JPG resized down, or a markdown file parsed into HTML<br />
** Preview URL - A url to a small square image to be used when previewing the content<br />
<br />
= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission/{id}/content<br />
<br />
= Request =<br />
<br />
PUT /submission/{id}/content<br />
X-SoFurry-Token: 1:3e9ed5866113d0a5b95b4798f8e7db9a<br />
(binary stream)<br />
<br />
The request body is just pure binary content - no fields or formats.<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 5,<br />
"user_id": "1",<br />
"title": "My awesome artwork",<br />
"type": "image",<br />
"description": "Some sample artwork",<br />
"guid": "f8a89ef6-34ac-a7a5-0c00-ad22165c46ba",<br />
"visible": "1",<br />
"reported": "0",<br />
"hold": "0",<br />
"rating": "clean",<br />
"created_at": "2016-04-25 13:23:41",<br />
"updated_at": "2016-04-25 13:29:25",<br />
"url": "http://sfx-api-tetsudra.c9users.io/devgetcontent/70bee5de-a96e-9c45-fd7e-e6e92d3ee6cd.png"<br />
}<br />
<br />
The result will be the submission object, along with a URL to view the submission.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:PUT_/submission/:id/content&diff=2088API:PUT /submission/:id/content2016-04-25T13:33:26Z<p>Tetsudra: /* Response: Success */</p>
<hr />
<div>This endpoint lets you push actual content into the submission.<br />
<br />
This endpoint is under development, with the following underlying changes pending:<br />
<br />
* Subtype processing pipelines - different file types will be handled and stored differently by the API.<br />
* Versioning - Every PUT to this endpoint will serve the latest version, but prior versions can be stored and accessed<br />
* URL array:<br />
** Original URL - to refer to the original file<br />
** Processed URL - to point to a rendered/processed version of the content. For example: A large JPG resized down, or a markdown file parsed into HTML<br />
** Preview URL - A url to a small square image to be used when previewing the content<br />
<br />
= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission/{id}/content<br />
<br />
= Request =<br />
<br />
PUT /submission/{id}/content<br />
X-SoFurry-Token: 1:3e9ed5866113d0a5b95b4798f8e7db9a<br />
(binary stream)<br />
<br />
The request body is just pure binary content - no fields or formats.<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 5,<br />
"user_id": "1",<br />
"title": "My awesome artwork",<br />
"type": "image",<br />
"description": "Some sample artwork",<br />
"guid": "f8a89ef6-34ac-a7a5-0c00-ad22165c46ba",<br />
"visible": "1",<br />
"reported": "0",<br />
"hold": "0",<br />
"rating": "clean",<br />
"created_at": "2016-04-25 13:23:41",<br />
"updated_at": "2016-04-25 13:29:25",<br />
"url": "http:\/\/sfx-api-tetsudra.c9users.io/devgetcontent/70bee5de-a96e-9c45-fd7e-e6e92d3ee6cd.png"<br />
}<br />
<br />
The result will be the submission object, along with a URL to view the submission.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:PUT_/submission/:id/content&diff=2086API:PUT /submission/:id/content2016-04-25T13:31:58Z<p>Tetsudra: /* Response: Success */</p>
<hr />
<div>This endpoint lets you push actual content into the submission.<br />
<br />
This endpoint is under development, with the following underlying changes pending:<br />
<br />
* Subtype processing pipelines - different file types will be handled and stored differently by the API.<br />
* Versioning - Every PUT to this endpoint will serve the latest version, but prior versions can be stored and accessed<br />
* URL array:<br />
** Original URL - to refer to the original file<br />
** Processed URL - to point to a rendered/processed version of the content. For example: A large JPG resized down, or a markdown file parsed into HTML<br />
** Preview URL - A url to a small square image to be used when previewing the content<br />
<br />
= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission/{id}/content<br />
<br />
= Request =<br />
<br />
PUT /submission/{id}/content<br />
X-SoFurry-Token: 1:3e9ed5866113d0a5b95b4798f8e7db9a<br />
(binary stream)<br />
<br />
The request body is just pure binary content - no fields or formats.<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 5,<br />
"user_id": "1",<br />
"title": "My awesome artwork",<br />
"type": "image",<br />
"description": "Some sample artwork",<br />
"guid": "f8a89ef6-34ac-a7a5-0c00-ad22165c46ba",<br />
"visible": "1",<br />
"reported": "0",<br />
"hold": "0",<br />
"rating": "clean",<br />
"created_at": "2016-04-25 13:23:41",<br />
"updated_at": "2016-04-25 13:29:25",<br />
"url": <nomarkup>"http://sfx-api-tetsudra.c9users.io/devgetcontent/70bee5de-a96e-9c45-fd7e-e6e92d3ee6cd.png"</nomarkup><br />
}<br />
<br />
The result will be the submission object, along with a URL to view the submission.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:PUT_/submission/:id/content&diff=2084API:PUT /submission/:id/content2016-04-25T13:31:34Z<p>Tetsudra: Created page with "This endpoint lets you push actual content into the submission. This endpoint is under development, with the following underlying changes pending: * Subtype processing pipel..."</p>
<hr />
<div>This endpoint lets you push actual content into the submission.<br />
<br />
This endpoint is under development, with the following underlying changes pending:<br />
<br />
* Subtype processing pipelines - different file types will be handled and stored differently by the API.<br />
* Versioning - Every PUT to this endpoint will serve the latest version, but prior versions can be stored and accessed<br />
* URL array:<br />
** Original URL - to refer to the original file<br />
** Processed URL - to point to a rendered/processed version of the content. For example: A large JPG resized down, or a markdown file parsed into HTML<br />
** Preview URL - A url to a small square image to be used when previewing the content<br />
<br />
= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission/{id}/content<br />
<br />
= Request =<br />
<br />
PUT /submission/{id}/content<br />
X-SoFurry-Token: 1:3e9ed5866113d0a5b95b4798f8e7db9a<br />
(binary stream)<br />
<br />
The request body is just pure binary content - no fields or formats.<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 5,<br />
"user_id": "1",<br />
"title": "My awesome artwork",<br />
"type": "image",<br />
"description": "Some sample artwork",<br />
"guid": "f8a89ef6-34ac-a7a5-0c00-ad22165c46ba",<br />
"visible": "1",<br />
"reported": "0",<br />
"hold": "0",<br />
"rating": "clean",<br />
"created_at": "2016-04-25 13:23:41",<br />
"updated_at": "2016-04-25 13:29:25",<br />
"url": "http://sfx-api-tetsudra.c9users.io/devgetcontent/70bee5de-a96e-9c45-fd7e-e6e92d3ee6cd.png"<br />
}<br />
<br />
The result will be the submission object, along with a URL to view the submission.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/submission&diff=2082API:POST /submission2016-04-25T13:27:23Z<p>Tetsudra: </p>
<hr />
<div>This is the first step in uploading new content into SoFurry. First, a Submission record is created via this method. It is then populated using the PUT method.<br />
<br />
Note that this API endpoint is still under development. Among the upcoming changes:<br />
<br />
* Subtypes - be more specific about the type of image, for eg: image.jpg, story.pdf, music.mp3<br />
* Content URLs - the return object will have a URL to access the content directly<br />
* Resolved User - Instead of just an ID, return the full user profile object in the same call, under <code>user</code><br />
<br />
= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission<br />
<br />
= Request =<br />
<br />
POST /submission<br />
X-SoFurry-Token: 1:3e9ed5866113d0a5b95b4798f8e7db9a<br />
{<br />
"title": "My awesome artwork", # Required, String<br />
"type": "image", # Required, One of: image, music, story, flash<br />
"rating": "clean" # Required, One of: clean, adult, extreme<br />
"description": "Some sample artwork", # Required, Max 8192 characters<br />
"visible": true<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"user_id": 1,<br />
"title": "My awesome artwork",<br />
"type": "image",<br />
"description": "Some sample artwork",<br />
"visible": true,<br />
"rating": "clean",<br />
"guid": "f8a89ef6-34ac-a7a5-0c00-ad22165c46ba",<br />
"updated_at": "2016-04-25 13:23:41",<br />
"created_at": "2016-04-25 13:23:41",<br />
"id": 5<br />
}<br />
<br />
The result will be the submission object itself. Once the submission is created it needs to be populated with the PUT method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/submission&diff=2080API:POST /submission2016-04-25T13:26:53Z<p>Tetsudra: Created page with "This is the first step in uploading new content into SoFurry. First, a Submission record is created via this method. It is then populated using the PUT method. Note that this..."</p>
<hr />
<div>This is the first step in uploading new content into SoFurry. First, a Submission record is created via this method. It is then populated using the PUT method.<br />
<br />
Note that this API endpoint is still under development. Among the upcoming changes:<br />
<br />
* Subtypes - be more specific about the type of image, for eg: image.jpg, story.pdf, music.mp3<br />
* Content URLs - the return object will have a URL to access the content directly<br />
* Resolved User - Instead of just an ID, return the full user profile object in the same call, under <code>user</code><br />
<br />
= Resource URL =<br />
<br />
https://api.sofurrybeta.com/submission<br />
<br />
= Request =<br />
<br />
POST /submission<br />
X-SoFurry-Token: 1:3e9ed5866113d0a5b95b4798f8e7db9a<br />
{<br />
"title": "My awesome artwork", # Required, String<br />
"type": "image", # Required, One of: image, music, story, flash<br />
"rating": "clean" # Required, One of: clean, adult, extreme<br />
"description": "Some sample artwork", # Required, Max 8192 characters<br />
"visible": true<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"user_id": 1,<br />
"title": "My awesome artwork",<br />
"type": "image",<br />
"description": "Some sample artwork",<br />
"visible": true,<br />
"rating": "clean",<br />
"guid": "f8a89ef6-34ac-a7a5-0c00-ad22165c46ba",<br />
"updated_at": "2016-04-25 13:23:41",<br />
"created_at": "2016-04-25 13:23:41",<br />
"id": 5<br />
}<br />
<br />
The result will be the submission object itself.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:PUT_/user&diff=2078API:PUT /user2016-04-25T13:07:43Z<p>Tetsudra: Created page with "= Resource URL = This API call lets you update several fields on your user profile. At this time, name and email cannot be updated. New fields will be added here as the beta..."</p>
<hr />
<div>= Resource URL =<br />
<br />
This API call lets you update several fields on your user profile. At this time, name and email cannot be updated. New fields will be added here as the beta is developed.<br />
<br />
https://api.sofurrybeta.com/user<br />
<br />
= Request =<br />
<br />
PUT /user<br />
X-SoFurry-Token: 1:f23f4c181cc8b73a6b4b5d14b45ce79b<br />
{<br />
"bio": "Black and purple lizard" # String, Max 16384 characters<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"result": true,<br />
"message": "Profile updated!"<br />
}<br />
<br />
Profile updates will reflect immediately.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:GET_/user/:id&diff=2076API:GET /user/:id2016-04-25T13:03:48Z<p>Tetsudra: /* Resource URL */</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/user/{id}<br />
<br />
= Request =<br />
<br />
GET /user/3<br />
X-SoFurry-Token: 1:f23f4c181cc8b73a6b4b5d14b45ce79b<br />
{}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 3,<br />
"name": "user2",<br />
"email": "user2@sofurrybeta.com",<br />
"level": "user",<br />
"created_at": "2016-04-15 11:08:01",<br />
"updated_at": "2016-04-15 11:08:01",<br />
"activated_at": null,<br />
"bio": null<br />
}<br />
<br />
The resulting content will be a JSON object containing information about the authenticated user's profile.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:GET_/user/:id&diff=2074API:GET /user/:id2016-04-25T13:03:39Z<p>Tetsudra: Created page with "= Resource URL = https://api.sofurrybeta.com/user = Request = GET /user/3 X-SoFurry-Token: 1:f23f4c181cc8b73a6b4b5d14b45ce79b {} = Response: Success = HTTP 200 {..."</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/user<br />
<br />
= Request =<br />
<br />
GET /user/3<br />
X-SoFurry-Token: 1:f23f4c181cc8b73a6b4b5d14b45ce79b<br />
{}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 3,<br />
"name": "user2",<br />
"email": "user2@sofurrybeta.com",<br />
"level": "user",<br />
"created_at": "2016-04-15 11:08:01",<br />
"updated_at": "2016-04-15 11:08:01",<br />
"activated_at": null,<br />
"bio": null<br />
}<br />
<br />
The resulting content will be a JSON object containing information about the authenticated user's profile.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:GET_/user&diff=2072API:GET /user2016-04-25T12:58:32Z<p>Tetsudra: Created page with "= Resource URL = https://api.sofurrybeta.com/user = Request = GET /user X-SoFurry-Token: 1:f23f4c181cc8b73a6b4b5d14b45ce79b {} = Response: Success = HTTP 200 { "..."</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/user<br />
<br />
= Request =<br />
<br />
GET /user<br />
X-SoFurry-Token: 1:f23f4c181cc8b73a6b4b5d14b45ce79b<br />
{}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"id": 1,<br />
"name": "Tetsudra",<br />
"email": "drgn@tetsudra.com",<br />
"level": "user",<br />
"created_at": "2016-04-14 12:50:53",<br />
"updated_at": "2016-04-25 12:56:26",<br />
"activated_at": "2016-04-14 12:53:12",<br />
"bio": "I am a dragon!"<br />
}<br />
<br />
The resulting content will be a JSON object containing information about the authenticated user's profile.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/user&diff=2070API:POST /user2016-04-25T12:53:53Z<p>Tetsudra: Created page with "= Resource URL = This method will register new users. If a user is successfully registered, an activation email will be sent containing the activation code. https://api.sof..."</p>
<hr />
<div>= Resource URL =<br />
<br />
This method will register new users. If a user is successfully registered, an activation email will be sent containing the activation code.<br />
<br />
https://api.sofurrybeta.com/user<br />
<br />
= Request =<br />
<br />
POST /user<br />
{<br />
"name": "bob", # Required, Unique, Alphanumeric Only<br />
"email": "bob@example.org", # Required, Valid Email, Unique<br />
"password": "hunter2" # Required, Min 6 characters<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"result": true,<br />
"token": "Registration complete! Please check your inbox for your activation link"<br />
}<br />
<br />
If the result is TRUE, then the activation was a success. The corresponding user will now be able to log in with their username and password.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/activate&diff=2068API:POST /activate2016-04-25T12:50:45Z<p>Tetsudra: /* Response: Failed Validation */</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/activate<br />
<br />
= Request =<br />
<br />
POST /activate<br />
{<br />
"activate_token": "abcd1234" # Required, 8 characters<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"result": true,<br />
"token": "Activated! Go ahead and log in."<br />
}<br />
<br />
If the result is TRUE, then the activation was a success. The corresponding user will now be able to log in with their username and password.<br />
<br />
= Response: Failed Validation =<br />
<br />
Examples of the failure response messages you'll see.<br />
<br />
If the activate_token field is not supplied:<br />
<br />
HTTP 422<br />
{<br />
"activate_token": [<br />
"The activate token field is required."<br />
]<br />
}<br />
<br />
If the token is too short or too long:<br />
<br />
HTTP 422<br />
{<br />
"activate_token": [<br />
"The activate token must be 8 characters."<br />
]<br />
}<br />
<br />
If the token cannot be identified in the database - note that once a token is used, it's cleared:<br />
<br />
HTTP 422<br />
{<br />
"activate_token": [<br />
"The selected activate token is invalid."<br />
]<br />
}<br />
<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/activate&diff=2066API:POST /activate2016-04-25T12:50:06Z<p>Tetsudra: /* Response: Failed Login */</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/activate<br />
<br />
= Request =<br />
<br />
POST /activate<br />
{<br />
"activate_token": "abcd1234" # Required, 8 characters<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"result": true,<br />
"token": "Activated! Go ahead and log in."<br />
}<br />
<br />
If the result is TRUE, then the activation was a success. The corresponding user will now be able to log in with their username and password.<br />
<br />
= Response: Failed Validation =<br />
<br />
Examples of the failure response messages you'll see.<br />
<br />
HTTP 422<br />
{<br />
"activate_token": [<br />
"The activate token field is required."<br />
]<br />
}<br />
<br />
HTTP 422<br />
{<br />
"activate_token": [<br />
"The activate token must be 8 characters."<br />
]<br />
}<br />
<br />
HTTP 422<br />
{<br />
"activate_token": [<br />
"The selected activate token is invalid."<br />
]<br />
}<br />
<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/activate&diff=2064API:POST /activate2016-04-25T12:46:58Z<p>Tetsudra: /* Request */</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/activate<br />
<br />
= Request =<br />
<br />
POST /activate<br />
{<br />
"activate_token": "abcd1234" # Required, 8 characters<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"result": true,<br />
"token": "Activated! Go ahead and log in."<br />
}<br />
<br />
If the result is TRUE, then the activation was a success. The corresponding user will now be able to log in with their username and password.<br />
<br />
= Response: Failed Login =<br />
<br />
HTTP 422<br />
{<br />
"result": false,<br />
"message": "Incorrect username or password"<br />
}<br />
<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/activate&diff=2062API:POST /activate2016-04-25T12:46:45Z<p>Tetsudra: Created page with "= Resource URL = https://api.sofurrybeta.com/activate = Request = POST /activate { // Required, 8 characters "activate_token": "abcd1234" } = Response: Success =..."</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/activate<br />
<br />
= Request =<br />
<br />
POST /activate<br />
{<br />
// Required, 8 characters<br />
"activate_token": "abcd1234"<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"result": true,<br />
"token": "Activated! Go ahead and log in."<br />
}<br />
<br />
If the result is TRUE, then the activation was a success. The corresponding user will now be able to log in with their username and password.<br />
<br />
= Response: Failed Login =<br />
<br />
HTTP 422<br />
{<br />
"result": false,<br />
"message": "Incorrect username or password"<br />
}<br />
<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/login&diff=2060API:POST /login2016-04-25T12:42:31Z<p>Tetsudra: </p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/login<br />
<br />
= Request =<br />
<br />
POST /login<br />
{<br />
"email": "bob@example.org",<br />
"password": "hunter2"<br />
}<br />
<br />
= Response: Success =<br />
<br />
HTTP 200<br />
{<br />
"result": true,<br />
"token": "1:fd776c3a631eeae849688a618887546d"<br />
}<br />
<br />
If the result is TRUE, then the login was a success. The token it returns should be sent on all future requests, using the <code>X-SoFurry-Token</code> HTTP header.<br />
<br />
= Response: Failed Login =<br />
<br />
HTTP 422<br />
{<br />
"result": false,<br />
"message": "Incorrect username or password"<br />
}<br />
<br />
You don't need to display that exact message in your client app. It will fail like this if the email address or password is incorrect, or if the user has not yet been activated.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/login&diff=2058API:POST /login2016-04-25T12:36:54Z<p>Tetsudra: /* Sample Response */</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/login<br />
<br />
= Request =<br />
<br />
POST /login<br />
{<br />
"email": "bob@example.org",<br />
"password": "hunter2"<br />
}<br />
<br />
= Successful Response =<br />
<br />
HTTP 200<br />
{<br />
"token": "..."<br />
}<br />
<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/login&diff=2056API:POST /login2016-04-25T12:36:12Z<p>Tetsudra: </p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/login<br />
<br />
= Request =<br />
<br />
POST /login<br />
{<br />
"email": "bob@example.org",<br />
"password": "hunter2"<br />
}<br />
<br />
= Sample Response =<br />
<br />
HTTP 200<br />
{<br />
"token": "..."<br />
}<br />
<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:POST_/login&diff=2054API:POST /login2016-04-25T12:34:42Z<p>Tetsudra: Created page with "= Resource URL = https://api.sofurrybeta.com/login = Request = POST /login { "username": "bobthefurry", "password": "fluggysnuggles" } = Sample Response = HTTP..."</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/login<br />
<br />
= Request =<br />
<br />
POST /login<br />
{<br />
"username": "bobthefurry",<br />
"password": "fluggysnuggles"<br />
}<br />
<br />
= Sample Response =<br />
<br />
HTTP 200<br />
{<br />
"token": "..."<br />
}<br />
<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2052API2016-04-25T12:33:17Z<p>Tetsudra: </p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The api runs on lumen, is classic json/rest, at the domain name api.sofurrybeta.com. It should always be accessed over HTTPS.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=Category:API&diff=2050Category:API2016-04-25T12:32:57Z<p>Tetsudra: Created page with "This Category contains all information pertaining to the SoFurry NEXT API"</p>
<hr />
<div>This Category contains all information pertaining to the SoFurry NEXT API</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:GET_/&diff=2048API:GET /2016-04-25T12:32:34Z<p>Tetsudra: </p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/<br />
<br />
= Request =<br />
<br />
GET /<br />
{}<br />
<br />
= Sample Response =<br />
<br />
SoFurry NEXT API | DEV<br />
<br />
<br />
[[Category:API]]</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:GET_/&diff=2046API:GET /2016-04-25T12:32:21Z<p>Tetsudra: </p>
<hr />
<div>[[Category:Name]]<br />
<br />
= Resource URL =<br />
<br />
https://api.sofurrybeta.com/<br />
<br />
= Request =<br />
<br />
GET /<br />
{}<br />
<br />
= Sample Response =<br />
<br />
SoFurry NEXT API | DEV</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API:GET_/&diff=2044API:GET /2016-04-25T12:31:11Z<p>Tetsudra: Created page with "= Resource URL = https://api.sofurrybeta.com/ = Request = GET / {} = Sample Response = SoFurry NEXT API | DEV"</p>
<hr />
<div>= Resource URL =<br />
<br />
https://api.sofurrybeta.com/<br />
<br />
= Request =<br />
<br />
GET /<br />
{}<br />
<br />
= Sample Response =<br />
<br />
SoFurry NEXT API | DEV</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2040API2016-04-25T11:48:57Z<p>Tetsudra: </p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The api runs on lumen, is classic json/rest, at the domain name api.sofurrybeta.com. It should always be accessed over HTTPS.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries<br />
<br />
== Private Messages ==<br />
<br />
Methods for listing, reading and sending Private Messages<br />
<br />
== Chatrooms ==<br />
<br />
List and get connection info for chatrooms. The actual rooms will be joined using a different method.</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2038API2016-04-25T11:47:18Z<p>Tetsudra: /* Virtual Galleries */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The api runs on lumen, is classic json/rest, at the domain name api.sofurrybeta.com. It should always be accessed over HTTPS.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Galleries ==<br />
<br />
A Gallery is a collection of artwork. By default, there is a global SoFurry Gallery into which all content is published.<br />
<br />
As a user, a gallery is created for you as soon as you upload your first piece of content. Galleries can also be created to curate content, and are created to support RP Universes.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2036API2016-04-25T11:40:41Z<p>Tetsudra: </p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The api runs on lumen, is classic json/rest, at the domain name api.sofurrybeta.com. It should always be accessed over HTTPS.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions.<br />
<br />
To do: Search submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Forum ==<br />
<br />
Methods for interacting on forums, still in development<br />
<br />
== Virtual Galleries ==<br />
<br />
A Virtual Gallery will function as a collection of artwork. These methods are for creating, accessing, and publishing new content to a Virtual Gallery.<br />
<br />
== RP Universes ==<br />
<br />
An RP Universe is built around a collection of roleplay posts, supplemented by artwork. These methods are for creating new universes, inviting characters to participate, the actual participation, and linking relevant content into the Universe.<br />
<br />
== Character System ==<br />
<br />
The Character system allows users to create roleplaying characters, which can be used to interact across the site.<br />
<br />
== Journals ==<br />
<br />
Methods for creating and updating journal entries</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2034API2016-04-25T11:36:13Z<p>Tetsudra: /* Submissions */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The api runs on lumen, is classic json/rest, at the domain name api.sofurrybeta.com. It should always be accessed over HTTPS.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:POST /submission|POST /submission]]</code><br />
|title, type, rating, description, visible<br />
|Create a new Submission record. It won't be shared until it has been populated with some content<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /submission/:id|GET /submission/{id}]]</code><br />
|id=Submission ID<br />
|Retrieve a Submission JSON object.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /submission/:id/content|PUT /submission/{id}/content]]</code><br />
|id=Submission ID, (binary stream)<br />
|Store a binary content stream against a submission. By default, populating a submission for the first time will publish it to your watchers, and the global gallery.<br />
|Yes<br />
|Live<br />
|}</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2032API2016-04-25T11:33:02Z<p>Tetsudra: /* Submissions and content */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The api runs on lumen, is classic json/rest, at the domain name api.sofurrybeta.com. It should always be accessed over HTTPS.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions ==<br />
<br />
These routes are all about creating and managing individual submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|}</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2030API2016-04-25T11:32:26Z<p>Tetsudra: /* Authenticated Routes */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The api runs on lumen, is classic json/rest, at the domain name api.sofurrybeta.com. It should always be accessed over HTTPS.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Submissions and content ==<br />
<br />
These routes are all about creating and managing individual submissions<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Status<br />
|}</div>Tetsudrahttp://wiki.sofurry.com/w/index.php?title=API&diff=2028API2016-04-25T11:31:29Z<p>Tetsudra: /* Users and Profiles */</p>
<hr />
<div>This page deals with the new-format REST API being developed as part of SoFurry NEXT. For documentation on the current "v3" API, please see [[SoFurry_REST_APIs]].<br />
<br />
= About the API =<br />
<br />
The api runs on lumen, is classic json/rest, at the domain name api.sofurrybeta.com. It should always be accessed over HTTPS.<br />
<br />
= Making a simple API request =<br />
<br />
GET request sample<br />
<br />
= Authentication =<br />
<br />
POST for login to create a session, get a token<br />
<br />
= API Routes =<br />
<br />
This table contains all the methods and URLs that the API currently supports. For more information on using a particular route, simply go through to that route's page.<br />
<br />
Some routes have no parameters at all, and can be accessed simply by doing the HTTP request. Some routes require parameters as part of the URL - they will be denoted by curly braces, and are always mandatory. Some requests expect parameters to be sent in the body of a JSON request.<br />
<br />
== Users and Profiles ==<br />
<br />
These routes are all about managing user accounts and profiles. Not all the routes are secure (require authentication).<br />
<br />
{| class="wikitable"<br />
|Route<br />
|Parameters<br />
|Description<br />
|Need Token?<br />
|Status<br />
|-<br />
|<code>[[API:GET /|GET /]]</code><br />
|<br />
|Returns the version of the API<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /login|POST /login]]</code><br />
|email, password<br />
|Validates the supplied credentials and returns an authentication token that should be used for all future requests<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /activate|POST /activate]]</code><br />
|activate_token<br />
|Activates a newly-registered user, enabling you to log in<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:POST /user|POST /user]]</code><br />
|name, email, password<br />
|Register a new user account and trigger a validation email to the supplied email address<br />
|No<br />
|Live<br />
|-<br />
|<code>[[API:GET /user|GET /user]]</code><br />
|<br />
|Returns a JSON object with the profile details of the authenticated user<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:GET /user/:id|GET /user/{id}]]</code><br />
|id=User ID<br />
|Returns the profile information for a different User ID.<br />
|Yes<br />
|Live<br />
|-<br />
|<code>[[API:PUT /user|PUT /user]]</code><br />
|bio<br />
|Make an update to the profile of the authenticated user by overwriting several fields.<br />
|Yes<br />
|Live<br />
|}<br />
<br />
== Authenticated Routes ==<br />
<br />
These routes all require authentication. Send in the authentication token using the `X-SoFurry-Token` header.<br />
<br />
{| class="wikitable"<br />
|+Users and Profiles<br />
|-<br />
|Route<br />
|Parameters<br />
|Description<br />
|Status<br />
<br />
|}<br />
<br />
Last updated at datetime</div>Tetsudra