HTTP WebHook

Allows gateway to POST order changes to a registered server.

POST /api/v2/register


Change for HTTP Webhook from V1 to V2 API

Previously, /api/v1/register was a GET method. In /api/v2/register, it is a POST method with the query parameters becoming body parameters.

Register a callback URL to be notified when an active order is modified. This is useful when you have more than one interface modifying orders. The payload in the POST will be a typical order summary.

Body Parameters

http_clientThe URL to invoke when an active order is modified.string, optional

Example Request

// Register Http Client (GET http://[TT LAN IP]:8000/api/v1/register)

    url: "http://[TT LAN IP]:8000/api/v1/register",
    type: "GET",
        "Authorization":"Basic MGE5YWViNDQtNjU0Yy00NGRjLWFhMjYtNjA5YWQzMTg2NTRkOg==",
.done(function(data, textStatus, jqXHR) {
    console.log("HTTP Request Succeeded: " + jqXHR.status);
.fail(function(jqXHR, textStatus, errorThrown) {
    console.log("HTTP Request Failed");
.always(function() {
    /* ... */
import org.apache.http.client.fluent.*;

public class SendRequest
  public static void main(String[] args) {
  private static void sendRequest() {
    // Register Http Client (GET )
    try {
      // Create request
      Content content = Request.Get("http://[TT LAN IP]:8000/api/v1/register?http_client=")
      // Add headers
      .addHeader("Authorization", "Basic MGE5YWViNDQtNjU0Yy00NGRjLWFhMjYtNjA5YWQzMTg2NTRkOg==")
      .addHeader("Content-Type", "application/json")
      // Fetch request and return content
      // Print content
    catch (IOException e) { System.out.println(e); }
// Register Http Client (GET http://[TT LAN IP]:8000/api/v1/register)

NSURL* URL = [NSURL URLWithString:@"http://[TT LAN IP]:8000/api/v1/register"];
NSDictionary* URLParams = @{
    @"http_client": @"",
URL = NSURLByAppendingQueryParameters(URL, URLParams);
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:URL];
request.HTTPMethod = @"GET";

// Headers

[request addValue:@"Basic MGE5YWViNDQtNjU0Yy00NGRjLWFhMjYtNjA5YWQzMTg2NTRkOg==" forHTTPHeaderField:@"Authorization"];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

// Connection

NSURLConnection* connection = [NSURLConnection connectionWithRequest:request delegate:nil];
[connection start];

 * Utils: Add this section before your class implementation

 This creates a new query parameters string from the given NSDictionary. For
 example, if the input is @{@"day":@"Tuesday", @"month":@"January"}, the output
 string will be @"day=Tuesday&month=January".
 @param queryParameters The input dictionary.
 @return The created parameters string.
static NSString* NSStringFromQueryParameters(NSDictionary* queryParameters)
    NSMutableArray* parts = [NSMutableArray array];
    [queryParameters enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
        NSString *part = [NSString stringWithFormat: @"%@=%@",
            [key stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding],
            [value stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]
        [parts addObject:part];
    return [parts componentsJoinedByString: @"&"];

 Creates a new URL by adding the given query parameters.
 @param URL The input URL.
 @param queryParameters The query parameter dictionary to add.
 @return A new NSURL.
static NSURL* NSURLByAppendingQueryParameters(NSURL* URL, NSDictionary* queryParameters)
    NSString* URLString = [NSString stringWithFormat:@"%@?%@",
        [URL absoluteString],
    return [NSURL URLWithString:URLString];
curl -X "GET" "http://[TT LAN IP]:8000/api/v1/register?http_client=" \
	-H "Authorization: Basic MGE5YWViNDQtNjU0Yy00NGRjLWFhMjYtNjA5YWQzMTg2NTRkOg==" \
	-H "Content-Type: application/json"
# Install the Python Requests library:
# `pip install requests`

import requests

def send_request():
    # Register Http Client (GET http://[TT LAN IP]:8000/api/v1/register)

        r = requests.get(
            url="http://[TT LAN IP]:8000/api/v1/register",
            params = {
            headers = {
                "Authorization":"Basic MGE5YWViNDQtNjU0Yy00NGRjLWFhMjYtNjA5YWQzMTg2NTRkOg==",
        print('Response HTTP Status Code : {status_code}'.format(status_code=r.status_code))
        print('Response HTTP Response Body : {content}'.format(content=r.content))
    except requests.exceptions.RequestException as e:
        print('HTTP Request failed')


200 OK (Client successfully registered.)

A client is successfully registered if the gateway can communicate with the server. It does this by making a HEAD request which all web servers and frameworks MUST support.

  "status": 200, 
  "message": "Registered client at:"

404 Not Found (Unable to reach HTTP server.)

  	"status": 404,
  	"message": "Client not responding at [CALLBACK_URL]"

Example payload sent to registered listeners

   "elapsedTime": 9, 
   "uuid": "147e7ccd-c17f-45b4-b5d4-bf14e9c0e244", 
   "seq": 196, "created": "2015-05-05T13:40:09", 
   "orderType": "ON_PREMISE", 
   "locationName": "22", 
   "state": "located", 
   "stateStarted": "2015-05-05T13:40:18", 
   "type": "ORDER_MODIFIED", 
   "name": "66"