© 2015 X2Engine Inc.

Difference between revisions of "REST API Reference"

From X2Engine
Jump to: navigation, search
(Prerequisites)
Line 3: Line 3:
  
 
= Introduction =
 
= Introduction =
This API within X2Engine, which can be accessed via the URI  
+
 
 +
This API within X2Engine, can be accessed via the URI
 
   index.php/api2
 
   index.php/api2
exclusively uses JSON for data input and output, operates via HTTP/S requests, tends to use similar URIs for both input and output (distinguishing operations via the request method) and uses a variety of server response codes to distinguish error scenarios in the case of an unsuccessful transaction.
+
It also:
 +
* Exclusively uses JSON for data input and output
 +
* Operates via HTTP/S requests
 +
* Tends to use similar URIs for both input and output (distinguishing operations via the request method)  
 +
* Uses a variety of server response codes to distinguish error scenarios in the case of an unsuccessful transaction
 +
* Uses the "HTTP Basic Auth" method for authentication
  
 
For example, to create a contact, one would send a <tt>POST</tt> request with its body a JSON-encoded attributes list to the URI  
 
For example, to create a contact, one would send a <tt>POST</tt> request with its body a JSON-encoded attributes list to the URI  
Line 14: Line 20:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
If creation of the contact is successful, the server should respond with status code 201, and the response should contain a <tt>Location</tt> header with the full URL (including protocol) of the newly created contact (in addition to all the attributes of the new contact). If for example the new contact's ID is 123, that URI would be <tt>index.php/api2/Contacts/123.json</tt>, and a GET request to that URI would elicit a response from the server whose body contains a JSON-encoded list of attributes.
 
If creation of the contact is successful, the server should respond with status code 201, and the response should contain a <tt>Location</tt> header with the full URL (including protocol) of the newly created contact (in addition to all the attributes of the new contact). If for example the new contact's ID is 123, that URI would be <tt>index.php/api2/Contacts/123.json</tt>, and a GET request to that URI would elicit a response from the server whose body contains a JSON-encoded list of attributes.
 +
 +
== Getting Started ==
 +
To use the API, you will need to obtain X2Engine API credentials, which include a username and an API key. An X2Engine user with administrative privileges can get or set API keys in the Users module  administrator. Any user can authenticate via the API by visiting the ''Update'' page for any given user.
 +
 +
== Explore the API In Your Browser ===
 +
Once you have API credentials, you can examine the web API using your web browser by making <tt>GET</tt> requests to locations within <tt>index.php/api2</tt> (simply by typing them into your browser's location bar). You can get a nicer view of the data returned by the server by installing a JSON viewing plugin in your web browser. A recommended plugin for this purpose is [JSONView], which is available [https://addons.mozilla.org/en-us/firefox/addon/jsonview/ for Firefox] and [https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc for Google Chrome].
 +
 +
Try visiting the following URI within X2Engine:
 +
  index.php/api2/appInfo.json
 +
Initially you will be prompted to enter the username and password to complete authentication; enter the API key corresponding to the user in the password field.
  
 
== Prerequisites ==
 
== Prerequisites ==
When utilizing the API it is thus required or highly recommended that your language/coding environment of choice:
+
When utilizing the API it is required or highly recommended that your language/coding environment of choice:
  
 
* Have a JSON parsing and encoding library available
 
* Have a JSON parsing and encoding library available
Line 22: Line 38:
 
** Set request headers
 
** Set request headers
 
** Parse response headers and read the response status code
 
** Parse response headers and read the response status code
 +
** Natively support requests using HTTP Basic Auth for access
 
** Read responses even when the response code is not in the "success" category (2xx)
 
** Read responses even when the response code is not in the "success" category (2xx)
 
** Make <tt>POST</tt>, <tt>PATCH</tt>/<tt>PUT</tt> and <tt>DELETE</tt> requests
 
** Make <tt>POST</tt>, <tt>PATCH</tt>/<tt>PUT</tt> and <tt>DELETE</tt> requests
Line 27: Line 44:
  
 
Many high-level languages, such as Perl, PHP, Python and Ruby, meet these requirements. The specific usage of these languages is beyond the scope of this article; you will need to refer to the documentation of the library/libraries used in writing applications with the X2Engine API.
 
Many high-level languages, such as Perl, PHP, Python and Ruby, meet these requirements. The specific usage of these languages is beyond the scope of this article; you will need to refer to the documentation of the library/libraries used in writing applications with the X2Engine API.
 +
 +
= Querying =
 +
The first thing you can try

Revision as of 01:44, 2 May 2014

X2Engine's second-generation API, which is (for the most part) REST-ful, includes many improvements over the original API.

Introduction

This API within X2Engine, can be accessed via the URI[[wikipedia:Uniform Resource Identifier]]: The part of a URL that identifies the resource on the server to be accessed. In the context of the API, this refers to the relative path within the web server based in the web root of X2Engine, i.e. ''index.php/api2/Contacts/324.json'' as opposed to the full URL, which begins with the protocol (i.e. "http") and might also contain a path relative to the web site's document root

 index.php/api2

It also:

  • Exclusively uses JSON for data input and output
  • Operates via HTTP/S requests
  • Tends to use similar URIs for both input and output (distinguishing operations via the request method)
  • Uses a variety of server response codes to distinguish error scenarios in the case of an unsuccessful transaction
  • Uses the "HTTP Basic Auth" method for authentication

For example, to create a contact, one would send a POST request with its body a JSON-encoded attributes list to the URI[[wikipedia:Uniform Resource Identifier]]: The part of a URL that identifies the resource on the server to be accessed. In the context of the API, this refers to the relative path within the web server based in the web root of X2Engine, i.e. ''index.php/api2/Contacts/324.json'' as opposed to the full URL, which begins with the protocol (i.e. "http") and might also contain a path relative to the web site's document root

 index.php/api2/Contacts

with the Content-Type header set to application/json, and the request body as (for example):

{"firstName":"John","lastName":"Smith","visibility":1,"email":"johnsmith@example.com"}

If creation of the contact is successful, the server should respond with status code 201, and the response should contain a Location header with the full URL (including protocol) of the newly created contact (in addition to all the attributes of the new contact). If for example the new contact's ID is 123, that URI[[wikipedia:Uniform Resource Identifier]]: The part of a URL that identifies the resource on the server to be accessed. In the context of the API, this refers to the relative path within the web server based in the web root of X2Engine, i.e. ''index.php/api2/Contacts/324.json'' as opposed to the full URL, which begins with the protocol (i.e. "http") and might also contain a path relative to the web site's document root would be index.php/api2/Contacts/123.json, and a GET request to that URI[[wikipedia:Uniform Resource Identifier]]: The part of a URL that identifies the resource on the server to be accessed. In the context of the API, this refers to the relative path within the web server based in the web root of X2Engine, i.e. ''index.php/api2/Contacts/324.json'' as opposed to the full URL, which begins with the protocol (i.e. "http") and might also contain a path relative to the web site's document root would elicit a response from the server whose body contains a JSON-encoded list of attributes.

Getting Started

To use the API, you will need to obtain X2Engine API credentials, which include a username and an API key. An X2Engine user with administrative privileges can get or set API keys in the Users module administrator. Any user can authenticate via the API by visiting the Update page for any given user.

Explore the API In Your Browser =

Once you have API credentials, you can examine the web API using your web browser by making GET requests to locations within index.php/api2 (simply by typing them into your browser's location bar). You can get a nicer view of the data returned by the server by installing a JSON viewing plugin in your web browser. A recommended plugin for this purpose is [JSONView], which is available for Firefox and for Google Chrome.

Try visiting the following URI[[wikipedia:Uniform Resource Identifier]]: The part of a URL that identifies the resource on the server to be accessed. In the context of the API, this refers to the relative path within the web server based in the web root of X2Engine, i.e. ''index.php/api2/Contacts/324.json'' as opposed to the full URL, which begins with the protocol (i.e. "http") and might also contain a path relative to the web site's document root within X2Engine:

 index.php/api2/appInfo.json

Initially you will be prompted to enter the username and password to complete authentication; enter the API key corresponding to the user in the password field.

Prerequisites

When utilizing the API it is required or highly recommended that your language/coding environment of choice:

  • Have a JSON parsing and encoding library available
  • Have a library for making HTTP requests which can:
    • Set request headers
    • Parse response headers and read the response status code
    • Natively support requests using HTTP Basic Auth for access
    • Read responses even when the response code is not in the "success" category (2xx)
    • Make POST, PATCH/PUT and DELETE requests
  • Can access the network

Many high-level languages, such as Perl, PHP, Python and Ruby, meet these requirements. The specific usage of these languages is beyond the scope of this article; you will need to refer to the documentation of the library/libraries used in writing applications with the X2Engine API.

Querying

The first thing you can try