Impression Server Endpoints
The impression server communicates through standard HTTP requests. The HTTP endpoints are documented below. Note that the URL prefix "iserver" can be changed by using the --prefix
command line option to the impression server.
The impression server by default listens on port 3004. You can change this using the --port
command line option.
iserver/nsessions
This returns the number of currently active sessions on the impression server. It can be used as a health check, or as part of a script to drain the sessions from an impression server before taking it down.
iserver/session?id=<id>
This returns a JSON object containing all the session fields for the session with the given persistent key. It is not used by Causal, but can be used by your internal systems to retrieve data from the impression server.
iserver/cmd
This endpoint is optional and off by default. You can enable it by passing the --enable-cmd command line argument to the impression server.
The endpoint is intended to issue commands to a running impression server and should not be exposed to the internet. Currently, the only command causes the impression server to flush all active sessions to storage and run the ETL. This is only useful for debugging the warehouse tables that are generated from impression server data and should not be used in production.
To call the endpoint, post this JSON to the endpoint: {"action": "flushToWarehouse"}
.
iserver/sse
The is an internally used server sent events connection that some client APIs make to the impression server to implement Causal's debugging features. It will only originate from internally registered machines. Due to the nature of SSE, this connection will be open for long periods of time, and will have the mime type 'text/event-stream'.
iserver/sync
Can be used to force a sync with the central Causal configuration in http://tools.causallabs.io/. If a 200 is returned then the sync is updated. Within the Causal iserver docker image, there is a script /root/resync.sh which can be called to issue the curl command. It can also be issued from kubectl exec pods/<pod-id> --stdin --tty -- /root/resync.sh <causal-token>
. The causal-token is the same token used to start the iserver with which authorizes the /sync
HTTP request.
iserver/external
Internally used Causal endpoint to handle external outputs.
iserver/feature
Internally used Causal endpoint to handle feature requests.