Route: "location"
Method: POST
Description: Updates the current location of the session.
Request: {longitude:0, latitude: 0}
Response: EMPTY RESPONSE

Route: "profile"
Method: GET
Description: Returns the visitor's profile for a site
Response: ChatBeacon VisitorProfile object

Route: "operator/img?operatorId={operatorId:int}"
Method: GET
Description: returns the specified operator's image
Response: FILE "img/*"

Route: "site/queue?queueId={queueId:int}"
Method: GET
Description: Returns the specified Queue
Response: ChatBeacon Queue object

Route: "site/queue/chat/segment"
Method: POST
Description: Sends a chat segment.  The request body will always have a 'type' of 2
Request: {chatId: 1, type: 2, text: "how are you doing?", action: 0}
Response: EMTPY RESPONSE

Route: "site/queue/chat/file?fileId={fileId:int}&chatId={chatId:int}"
Method: GET
Description: Returns a file sent during the chat.
Response: FILE "*/*"

Route: "site/queue/chat/file"
Method: POST
Description: Upload a file to the chat.  The file should be base64 encoded
Request: {file: "[base64 encoded string]", name: "me.png", chatId: 4}
Reponse: EMPTY RESPONSE

Route: "site/queue/chat/file/notify"
Method: POST
Description: Notify the chat when a file upload has begun, or been canceled
Request: {sending: true|false, chatId: 4}

Route: "site/queue/request"
Method: DELETE
Description: Cancels the current chat request
Response: EMPTY

Route: "site/queue/chat"
Method: DELETE
Description: Ends the current chat
Response: EMTPY

Route: "site/queue/chat/survey"
Method: POST
Description: Updates a ChatSurvey object
Request: ChatBeacon ChatSurvey object
Response: EMTPY

Route: "site/queue/survey?queueId={queueId:int}&type={surveyType:int}"
Method: GET
Description: Gets the Queue's Survey. type=1//prechat, type=2//post-chat, type=3//offline
Response: ChatBeacon Survey object

Route: "site/queue/survey"
Method: POST
Description: Submit a ChatBeacon Survey object.  If the survey is a prechat survey, a ChatBeacon Request object will be returned.
Request:ChatBeacon Survey object
Response: ChatBeacon Request object | EMPTY

Route: "site/session"
Method: POST
Description: Creates a new session
Request: {resolution: "1080x1920x24", gdpr: false, useragent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"}
Response: {visitorId: 78e89576-5b8f-4bca-9742-455c7a101d03, sessionId: e8e023bf-a94b-46be-bbcc-1545f1df0838}

Route: "site/session/sync"
Method: GET
Description: Returns the visitors updated monitoring data. If the session is not currently in a chat, sync MUST be called in order to keep the session alive
Response {invite:[ChatBeacon Invite object], pushUrl:[ChatBeacon PushUrl object], banned: false, visitorId: 78e89576-5b8f-4bca-9742-455c7a101d03, sessionId: e8e023bf-a94b-46be-bbcc-1545f1df0838, rules:[Array of ChatBeacon RuleActions], screenShare:[screen share service api key], pulse: 25, chatStatus: 1, queueStatus: 1 }

Route: "site/session/valid"
Method: GET
Description: validates a session by determining if it exists for the site and not expired.
Response: {valid: true}

Route: "site/session/page"
Method: POST
Description: Add a page to the session
Request: {page: "http://chatbeacon.io/faq?articleId=1", referrer: "http://google.com"}

Route: "site/session/invite"
Method: POST
Description: Report if an invite was accepted/declined
Request: {queueId: 100, accepted: true|false}
Response: EMPTY

Route: "site/session/variables"
Method: POST
Description: update the sessions variable values
Request: {variables: [Array of ChatBeacon Variable objects]}
Reponse: EMPTY

Route: "site/conversations"
Method: GET
Description: Returns an array of ChatBeacon Chat objects.  Each chat represents the last chat in a conversation
Response: {conversations: [Array of ChatBeacn Chat]}

Route: "site/conversations/{chatId:int}"
Method: GET
Description: Returns an array of ChatBeacon Chat objects representing an entire convesation
Response: {conversation: [Array of ChatBeacn Chat]}

Route: "site/conversations/resume"
Method: POST
Description: Starts a chat, and associates it with a prior chat, resulting in a conversation being created/resumed.
Request: {priorId: 9}
Response: EMTPY