Skip to main content

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.