NAV
shell

Introduction

Welcome to Direct Connect: The Omniscan API!

This is the gateway to the Scanning Service for Go City. With our API, we provide the ability to validate the customers pass at your attraction in real-time.

A customer visits your attraction with a Go City pass. The pass has a pass number (confirmation code) and QR code to scan.

alt text

The Omniscan API allows you to validate that pass number (confirmation code) for entry to your attraction.

Once the pass is successfully validated, we update our own scan records to track its usage. So we will know if a pass has already been used for a particular attraction and cannot be used again.

Endpoints Summary

Our live production Omniscan can be accessed via this host:

For testing purposes, please use:

Our API provides the following resources:

Pass Region lookup

Check the local region of the pass

https://api.gocity.com/omniscan/terminal/passes/v1/{{confirmationCode}}/region

Pass Usage lookup

Look up available attractions for the pass

https://api.gocity.com/omniscan/terminal/passes/v1/{{confirmationCode}}

Pass Validation

Validate the pass for the attraction

https://api.gocity.com/omniscan/terminal/v1/{{confirmationCode}}

Authentication

Go City will provide you with a username and a password.

Each endpoint uses Basic Authentication.

Terms

Confirmation Code

Terminal ID

Validation

Pass Region lookup

Look up the local region where the pass is expected to be applicable.

Request

URL: GET /omniscan/terminal/passes/v1/{{confirmationCode}}/region

Response

Sample Response:

{
    "region": "New York"
}

Response Object

Name Type Description
region String The name of the region

Failure Response

If the Confirmation Code is not recognised when doing the region lookup. This will return a 400 HTTP Status.

Sample Failure Response:

{
    "errorType": "RESOURCE_NOT_FOUND",
    "error": "Unable to get pass region for confirmationCode: {{confirmationCode}}"
}

Pass Usage lookup

Look up available attractions for the Confirmation Code.

A list of attraction details will be returned with a visitPermission flag. This will be true if the attraction is still available - i.e: the customer has not redeemed their pass at this attraction yet.

Request

URL: GET /omniscan/terminal/passes/v1/{{confirmationCode}}

Response

Sample Response:

{
    "terminalId": "terminal01",
    "attractionList": [
        {
            "attractionId": 102100,
            "attractionName": "Attraction Name",
            "visitPermission": true
        }
    ]
}

Response Object

Name Type Description
terminalId String Terminal ID used to resolve available attractions
attractionList List List of available attractions

attractionList Data:

Name Type Description
attractionId Number Id of the attraction - can be used when doing a terminal scan if we need to select an attraction where multiple attractions are assigned to the terminal
attractionName String Display name of the attraction
visitPermission Boolean Is the attraction available to scan? i.e: has it not already been used?

Failure Response

If the confirmation code has no available attractions:

Sample Failure Response:

{
    "terminalId": "terminal01",
    "attractionList": [
        {
            "visitPermission": false
        }
    ]
}

If the usage lookup fails unexpectedly"

Sample Failure Response:

{
    "errorType": "ERROR_CODE",
    "error": "Failed to lookup Pass Usage"
}

Pass Validation

Sample Request Body:

{
    "scanDate": "MM/dd/yyyy HH:mm:ss",
    "attractionId": 12345
}

Validate a pass for an attraction. Will return SUCCESS if the pass is allowed entry.

Request

URL: POST /omniscan/terminal/v1/{{confirmationCode}}

Request Body

Name Type Required Description
scanDate String yes The scan date and time in the format MM/dd/yyyy HH:mm:ss
attractionId Integer no The ID of the attraction - only required if the pass applies to multiple attractions

Success Response

A customer's pass is valid for this attraction and they may enter.

Sample Response:

{
    "status": "SUCCESS",
    "message": "Admit One Adult",
    "scanDate": "MM/dd/yyyy HH:mm:ss",
    "confirmationCode": "{{confirmationCode}}",
    "terminalId": "{{terminalId}}",
    "passProvider": "SDI",
    "productType": "GO/EXP",
    "passType": "Adult",
    "attractions": [
        {
            "attractionId": 12345,
            "attractionName": "Some Attraction",
            "passProvider": "SDI"
        }
    ]
}
Name Type Value Description
status String SUCCESS Status indicating that Scan was successful
message String Successful scan message
scanDate String MM/dd/yyyy HH:mm:ss The scan date and time
confirmationCode String {{confirmationCode}} The confirmation code scanned
terminalId String {{terminalId}} The ID of the terminal
passProvider String SDI / LPOS The pass provider platform that validates this pass
productType String GO/EXP The scan is for a Go City All-Inclusive or Explorer Pass
BYO The scan is for a Build Your Own pass
NYP The scan is for a New York Pass
LVP The scan is for a Las Vegas Pass
passType String Adult The pass is an adult pass
Child The pass is a child pass
FAM The pass is a familiarisation pass
VIP The pass is a VIP pass
attractions List The attraction that was scanned.

Failure Response

A pass validation may fail for a number of reasons including:

Please note that a validation fail will still result in a HTTP 200 OK response.

Sample Response (already visited):

{
   "status": "FAILURE",
   "message": "No Entry Already Visited",
   "scanDate": "06/25/2020 13:00:00",
   "confirmationCode": "{{confirmationCode}}",
   "attractions": []
}

Sample Response (invalid Confirmation code):

{
   "status": "FAILURE",
   "message": "Not a valid Confirmation Code format",
   "scanDate": "06/25/2020 13:00:00",
   "confirmationCode": "{{confirmationCode}}",
   "terminalId": "terminal01"
}
Name Type Value Description
status String FAILURE Status indicating that the Scan was unsuccessful
message String Scan failure message - explains why the scan failed
scanDate String MM/dd/yyyy HH:mm:ss The scan date and time
confirmationCode String {{confirmationCode}} The confirmation code scanned
attractions List The attraction scanned for - if relevant to the failure

Warning Response

This will occur if the pass applies to more than one attraction, but no attractionId was provided.

In this case, the response will provide the list of available attractions, including the name and ID.

Then you will be able to set your chosen attractionId and send the scan request again.

Please note that this will result in a HTTP 200 OK response.

Sample Response:

{
    "status": "WARNING",
    "message": "Multiple Attractions for the Terminal: {{terminalId}}",
    "scanDate": "07/14/2020 13:00:00",
    "confirmationCode": "{{confirmationCode}}",
    "terminalId": "{{terminalId}}",
    "passProvider": "SDI",
    "productType": "GO/EXP",
    "passType": "Child",
    "attractions": [
        {
            "attractionId": 111111,
            "attractionName": "Night Tour",
            "passProvider": "SDI"
        },
        {
            "attractionId": 111112,
            "attractionName": "Daytime Tour",
            "passProvider": "SDI"
        }
    ]
}

Name Type Value Description
status String WARNING Status indicating that multiple attractions were found
message String Message indicating that multiple attractions were found
scanDate String MM/dd/yyyy HH:mm:ss The scan date and time
confirmationCode String {{confirmationCode}} The confirmation code scanned
terminalId String {{terminalId}} The ID of the terminal
passProvider String SDI / LPOS The pass provider platform that validates this pass
productType String GO/EXP The scan is for a Go City All-Inclusive or Explorer Pass
BYO The scan is for a Build Your Own pass
NYP The scan is for a New York Pass
LVP The scan is for a Las Vegas Pass
passType String Adult The pass is an adult pass
Child The pass is a child pass
FAM The pass is a familiarisation pass
VIP The pass is a VIP pass
attractions List The available attractions