Insite - In-Situ Pipeline REST API (2.1.0)

Download OpenAPI specification:Download

Insite - A Pipeline Enabling In-Transit Access for NEST, TVB and Arbor.

This research was supported by the EBRAINS research infrastructure, funded from the European Union’s Horizon 2020 Framework Programme for Research and Innovation under the Specific Grant Agreement No. 945539 (Human Brain Project SGA3).
This project/research has received funding from the European Union’s Horizon 2020 Framework Programme for Research and Innovation under the Specific Grant Agreement No. 945539 (Human Brain Project SGA3) and Specific Grant Agreement No. 785907 (Human Brain Project SGA2).

Goal

Insite provides a middleware that enables users to acquire data from neural simulators via the in-transit paradigm. In-transit approaches allow users to access data from a running simulation while the simulation is still going on. In the traditional approach data from simulations is written to disk first, and can only be accessed after the simulation has finished. However, this has two main constraints:

  1. Data can only be further processed after the whole simulation has finished.
  2. Disk speed can be a bottleneck when simulating, as data has to be written out.
  3. Data must be completely stored on the machine, leading to large files.

Using Insite allows users to develop data consumer, such as visualizations and analysis tools that allow early insight into the data without storing data with virtually zero dependencies.

Insite was specifically designed to be ease-to-integrate and easy-to-use to allow a wide range of users to take advantage of in-transit approaches in the context of brain simulatiion. Insite uses off-the-shelf dataformats and protocols to make integration as easy as possible. Data can be queried via an HTTP REST API from Insite's access node, which represents a single point of contact for the user.

Architecture

Insite consists of two main layers. The first part is the Insite access node, an HTTP server that serves as a centralized endpoints.

The access node aggregates data from multiple simulators (NEST, Arbor, TVB) and from multiple simulation instances, respectively. This means, that even distributed simulations, e.g. via MPI, can be access as if it is only one simulation instances. Data is aggregated at the access node and can then be filtered and accessed by the user. Thus, allowing convienent access to multi-node multiscale simulations.

Markdown Monster icon
Figure 1: Top level architecture of Insite. Data is collected from simulators and provided via an access node.

This architecture enables users to easily create in-situ visualizations of neural simulations without the knowledge of the simulation's underlying architecture or any further knowledge about the computational distribution of the simulation. Users can query the HTTP endpoint for different datapoints, such as: spike data, multimeter data, the topology of the neural network and so on (see full API below). The returned data in encoded in JSON, thus allowing processing in a plethora of different languages and systems without Insite specific dependencies.

The access-node provides the full API to the Insite pipeline which is documented below.

The second part are Insite's simulator plugings. The simulator plugin is embedded into the respective simulations and is responsible for collecting simulation data and making it available to the access node. The simulators plugins are designed to be as non-invasive as possible to make integration into new and existing simulations easy. Simulator plugins are available for NEST, Arbor and The Virtual Brain.

Additional information can be found on the following poster:

Markdown Monster icon

Using Docker

To be able to use the Docker images please make sure that the docker engine and docker compose are installed.
(Or docker compatible containerization engines)

There are two different approaches for using Insite with docker:

  1. Using Pre-built Images
  2. Build Docker Images

Run the example

The docker-compose below provides an example with all three simulators. While in this case each simulator runs their own simulation, all data can be queried via the single access-node nonetheless. Just save the docker-compose as some-name.yaml and then start Insite with docker-compose -f some-name.yaml up. Docker will download all four containers and start the simulations. You can query the data from the examples from the access node via localhost:52056 via your favourite tool, e.g.: curl -L localhost:52056/version/ to retrieve the version.

version: "3"

services:
  insite-access-node:
    image:
      docker-registry.ebrains.eu/insite/access-node
    ports:
      - "52056:52056" # You can change the local part of the port here 
    environment:
      INSITE_NEST_BASE_URL: "insite-nest-example"
      INSITE_ARBOR_BASE_URL: "insite-arbor-example"

  insite-nest-example:
    image:
      docker-registry.ebrains.eu/insite/insite-nest-example
    depends_on:
      - insite-access-node

  insite-tvb-example: 
    image:
      docker-registry.ebrains.eu/insite/insite-tvb-example
    environment:
      INSITE_ACCESS_NODE_URL: "insite-access-node"
    depends_on:
      - insite-access-node

  insite-arbor-example: 
    image:
      docker-registry.ebrains.eu/insite/insite-arbor-example
    depends_on:
    - insite-access-node

Using Pre-built Images

We provide pre-built images for NEST, Arbor, TVB and the Insite access node. These images contain the respective simulator binaries and the Insite simulator module pre-installed:

Container Link
Arbor Link
NEST Link
TVB Link
Access Node Link

You can use these images to deploy your own Insite-enabled simulations. For further information on how to that you can refer to our examples.

Build Docker Images

To build the docker containers yourself you can use the provided Dockerfile in the repository.

Dockerfiles are located in the docker with the following structure:

docker
├── Dockerfile_AccessNode
├── examples
│   ├── Dockerfile_ArborRingExample
│   ├── Dockerfile_NestExample
│   └── Dockerfile_TVBExample
└── simulators
    ├── Dockerfile_Arbor
    ├── Dockerfile_NEST
    └── Dockerfile_TVB

Dockerfile_AccessNode builds Insite's access node.
simulators/Dockerfile_* builds the respective simulators with Insite simulator modules integrated.
examples/Dockerfile_* builds the respective examples. They are based on the simulator docker images but add example simulations.

The Dockerfiles refer to relative locations starting at the repository root. Therefore, to build containers please build from the root and refer to the Dockerfiles, e.g.: docker build . -f docker/simulators/Dockerfile_Arbor

Building From Source

  1. Clone this repository (git clone https://github.com/VRGroupRWTH/insite.git).

Building the Access Node

The access node is written in C++ and uses the CMake build system. Dependencies are downloaded via CPM during configuration.

cd access-node
mkdir build && cd build
cmake ..
make -j insite-access-node

Access node dependencies:

Building the Arbor Module

The arbor module is written in C++ and uses the CMake build system. Dependencies are downloaded via CPM during configuration.

cd arbor-module
mkdir build && cd build
cmake ..
make -j insite-arbor 
make install

Arbor module dependencies:

Building the NEST Module

The nest module is written in C++ and uses the CMake build system. Dependencies are downloaded via CPM during configuration. First build nest according to the the nest documentation, then build against nest.

cd nest-module
mkdir build && cd build
cmake .. -Dwith-nest=NEST_INSTALL_PATH/bin/nest-config
make -j install 

NEST module dependencies:

Building the TVB module

The TVB module is written in Python and involves no compilation process. Dependencies can be installed via pip:

cd tvb-module
pip install -r requirements.txt

Tvb module dependencies:

Embedding Insite into Simulations

NEST Integration

The following sections assumes that the Insite nest module was successfully compiled and installed and is available. Either through using the NEST insite container described above or by manual compilation.
Insite can be integrated into NEST simulation via NEST's Python API. A NEST simulation can be in-transit enabled by adding Insite recording backends into the simulation after activating Insite with:

nest.Install("insitemodule")

Afterwards, a new spike recorder or multimeter can be created with:

# Create spike recorder
insite_spike_recorder = nest.Create("spike_recorder")

#Create multimeter
insite_multimeter = nest.Create("multimeter")

To enable recording to Insite the spikerecorder and multimeter have to be set to the correct recording backend with:

nest.SetStatus(YOUR_DEVICE, [{"record_to":"insite"}])

respectively.

The recording devices act as normal NEST nodes and can be connected to other nodes, e.g., neurons:

nest.Connect(nodes_ex, insite_spike_recorder, syn_spec="excitatory")

All neurons connected to Insite devices are available via the Insite pipeline.
Endpoints for spikerecorders and multimeters provide information about Insite-enabled nodes in the network while the spike and multimeter endpoints return data recorded by the devices.

Arbor Integration

The following sections assumes that the Insite nest module was successfully compiled and installed and is available. Either through using the Arbor insite container described above or by manual compilation.
Insite can be embedded into Arbor simulations via the Insite arbor C++ module. Therefore, arbor simulations using Insite must link against insite-arbor in their CMakeLists. E.g.:

target_link_libraries(YOUR_SIMULATION PUBLIC insite-arbor)

Afterwards, the simulation can be made Insite-enabled by embedding the Insite pipeline backend into your simulation file.
First include the pipeline backend:

#include <insite/arbor/pipeline_backend.h>

Next, add an Insite HTTP backend in your main code before running the simulation:

    insite::HttpBackend insite_backend(context, recipe, sim, arb::all_probes,
                                   arb::regular_schedule(1.0));

The signature is as follows:

HttpBackend(const arb::context& ctx,
          const arb::recipe& rcp,
          arb::simulation& sim,
          arb::cell_member_predicate cell_pred,
          arb::schedule sched);

The cell_member_predicate can be used to filter the probes that should be made available via Insite. In the example arb::all_probes enables all present probes to be accessed via Insite. The sched describes the sampling rate of the Insite-enabled probes.

The Backend provides information about the cells present in the simulation. Additionally, the spikes of all neurons are recorded by default. Available probes and their data can be queried via the API.

Please refer to the API documentation below for a complete overview.

TVB Integration

The following sections assumes that the Insite TVB module is available. Either through using the Arbor insite container described above or by manual installation.

First import the Python TVB modules:

from insite_websocketmanager import InsiteWebSocketManager, InsiteOpcode
from insite_monitor_wrapper import InsiteMonitorWrapper

afterwards initialize the InsiteWebSocketManager:

insite_ws_manager = WebSocketManager(INSITE_ACCESS_NODE_URL,9011)

the access node url.

To record data to Insite regular monitors have to be wrapped via the InsiteMonitorWrapper:

mon_raw = monitors.Raw()
mon_spat = monitors.SpatialAverage()
insite_spatial = MonitorWrapper(mon_spat,insite_ws_manager)
insite_raw = MonitorWrapper(mon_raw,insite_ws_manager)

Monitors can be configured as usual before calling the MonitorWrapper. All wrapped monitors that are registered as monitors at the simulation will be will be available via Insite pipeline.

what_to_watch = [insite_raw, insite_spatial]
sim = simulator.Simulator(model = oscilator, connectivity = white_matter,
                      coupling = white_matter_coupling, 
                      integrator = heunint, monitors = what_to_watch)

Before starting the simulation connect() and the send_start_sim() function must be called. send_sim_info(sim) must be called before configure is called on the simulation. After the simulation send_end_sim() must be called. Finally, the connection can be close via the close() call.

The following code shows the complete boilerplate code for wrapping a TVB simulation:


insite_ws_manager = WebSocketManager(address,9011)

insite_ws_manager.connect()

mon_raw = monitors.Raw()
mon_spat = monitors.SpatialAverage()
insite_spatial = MonitorWrapper(mon_spat,insite_ws_manager)
insite_raw = MonitorWrapper(mon_raw,insite_ws_manager)

length = 500
what_to_watch = [insite_spatial]

[simulation settings...]


insite_ws_manager.send_start_sim()

sim = simulator.Simulator(model = oscilator, connectivity = white_matter,
                          coupling = white_matter_coupling, 
                          integrator = heunint, monitors = what_to_watch)

insite_ws_manager.send_sim_info(sim)
sim.configure()

for data in sim(simulation_length=length):
    pass

insite_ws_manager.send_end_sim()
insite_ws_manager.close()

Insite Access Node Configuration

The following settings can be configured on the access node:

Description config key env var
#NEST Nodes numberOfNodes INSITE_NEST_NUM_NODES
URL of NEST Simulator baseUrl INSITE_NEST_BASE_URL
#Arbor Nodes numberOfNodes INSITE_ARBOR_NUM_NODES
URL of Arbor Simulator baseUrl INSITE_ARBOR_BASE_URL
Access Node API Port port INSITE_ACCESS_NODE_PORT
Access Node Websocket Port (TVB Port) websocketPort INSITE_ACCESS_NODE_WSPORT

Values can be provided by settings the corresponding environment variable or via TOML or YAML in a config.{toml,yaml} file via the same directory as the binary.
Toml example:

["nest"]
numberOfNodes = 2
baseUrl = "insite-nest-example"

["arbor"]
numberOfNodes = 1
baseUrl = "insite-arbor-example"

["accessNode"]
port = 52056
websocketPort = 9011

Yaml example:

nest:
  numberOfNodes: 2
  baseUrl: "insite-nest-example"
arbor:
  numberOfNodes: 1
  baseUrl: "insite-arbor-example"
accessNode:
  port: 52056
  websocketPort: 9011

Release Notes

Version 2.1

Release 2.1 of Insite has support for the following simulators:

  • NEST
  • (new) Arbor
  • (new) TVB and incorporates the following new components:
  • C++ Arbor simulator module
  • Python TVB simulator module
  • TVB integration tests
  • Arbor integration tests
  • Docker support:
    • Arbor container with Insite example
    • TVB container with Insite example
    • docker-compose file incorporating all three simulators and Access Node enhanced components:
  • C++ NEST simulator module
  • C++ Access Node
  • Docker support:
    • Access Node container
    • NEST container with Insite example
    • Access Node container as well as:
  • Miscellaneous bug fixes
  • Updated Documentation
  • Integration into Ebrains CI/CD

Version 2.0

Release 2.0 of Insite has support for the following simulators:

  • NEST and incorporates the following enhancements:
  • Complete rewrite of the Access Node into C++
    • General performance improvements
    • Parallalization of requests to simulation nodes

NOTE: 2.0 release scraped in benefit of merge with 2.1

Version 1.1

Release 1.1 of Insite has support for the following simulators:

  • NEST and incorporates the following enhancements:
  • C++ NEST simulator module updated for NEST 3.2
  • Major performance improvements for Python Access Node
  • Improved API:
    • Adds fields to indicate that requests contain the last data point
    • Adds fields to indicate that simulation is running or has finished
  • Compatibility to NEST Server
  • Improved integration tests
  • Miscellaneous bug fixes

Version 1.0

Release 1.0 of Insite has support for the following simulators:

  • NEST and incorporates the following components:
  • C++ NEST simulator module
  • Python Access Node
  • Docker containers:
    • Access Node
    • NEST Simulator with Insite module installed

TVB

Monitors

Returns monitors in the TVB instance that are connected to Insite and available to fetch data from.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Monitor Data

Returns recorded data from the monitors in the TVB instance that are connected to Insite and available to fetch data from.

query Parameters
gId
integer <uint64>

One or more gIds that should be filtered for.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Simulation Properties

Returns the simulation properties of the TVB instance connected to the the Insite instance. Returned values can be inspected further with the /simulation_info/ endpoint.

Responses

Response samples

Content type
application/json
{
  • "Type": "Simulator",
  • "title": "Simulator gid: e0f27575-bc8c-4444-a298-0bd7a272ac43",
  • "connectivity": "Connectivity gid: de59731a-f13f-4103-a2d5-9182eb4ba213",
  • "conduction_speed": "3.0",
  • "coupling": "Linear gid: 520ba213-dee2-41c8-972d-95ffc71f6d38",
  • "surface": "None",
  • "stimulus": "None",
  • "model": "Generic2dOscillator gid: de979767-c3fb-4072-a8a0-5ff096b5ef21",
  • "integrator": "HeunDeterministic gid: 71890b28-7f4e-4cfa-a45c-ecb7ba92ef1a",
  • "initial_conditions": "None",
  • "monitors": "[<monitor_wrapper.MonitorWrapper object at 0x7fc7c94b5210>]",
  • "simulation_length": "1000.0",
  • "gid": "UUID('e0f27575-bc8c-4444-a298-0bd7a272ac43')"
}

Subproperties of Simulation Properties

Returns the simulation subproperties of the TVB instance connected to the the Insite instance. Returned values can be inspected further with the /simulation_info//... endpoint.

path Parameters
property
required
any

Name of a property returned by /simulation_info or /simulation_info/other_prorperty.

Responses

Response samples

Content type
application/json
{
  • "Number of regions": 76,
  • "Number of connections": 1560,
  • "Undirected": false,
  • "areas": " [min, median, max] = [0, 2580.89, 10338.2] dtype = float64 shape = (76,)",
  • "weights": " [min, median, max] = [0, 0, 3] dtype = float64 shape = (76, 76)",
  • "weights-non-zero": " [min, median, max] = [0.00462632, 2, 3] dtype = float64 shape = (1560,)",
  • "tract_lengths": " [min, median, max] = [0, 71.6635, 153.486] dtype = float64 shape = (76, 76)",
  • "tract_lengths-non-zero": " [min, median, max] = [4.93328, 74.0646, 153.486] dtype = float64 shape = (5402,)",
  • "tract_lengths (connections)": " [min, median, max] = [0, 55.8574, 138.454] dtype = float64 shape = (1560,)"
}

Arbor

Simulation Probes

Returns all probes that are present in the simulation and are connected to the Insite instance.

query Parameters
gId
integer <uint64>

One or more gIds that should be filtered for.

lId
integer <uint64>

One or more lIds that should be filtered for.

pId
integer <uint64>

One or more pIds that should be filtered for.

uId
integer <uint64>

One or more uIds that should be filtered for.

hash
integer <uint64>

One or more probe hashes that should be filtered for.

Responses

Response samples

Content type
application/json
{
  • "probes": [
    ]
}

Probe Data

Returns data from the probes that are present in the simulation and are connected to the Insite instance.

query Parameters
gId
integer <uint64>

One or more gIds that should be filtered for.

lId
integer <uint64>

One or more lIds that should be filtered for.

pId
integer <uint64>

One or more pIds that should be filtered for.

uId
integer <uint64>

One or more uIds that should be filtered for.

hash
integer <uint64>

One or more probe hashes that should be filtered for.

fromTime
number <double>

The start time in milliseconds (including) to be queried.

Responses

Response samples

Content type
application/json
{
  • "probeData": [
    ]
}

Spikes

Returns spikes that occured in the simulation.

query Parameters
fromTime
number <double>

The start time in milliseconds (including) to be queried.

toTime
number <double>

The end time in milliseconds (excluding) to be queried.

gId
integer <uint64>

One or more gIds that should be filtered for.

skip
integer <uint64>

The offset into the result.

top
integer <uint64>

The maximum number of entries to be returned.

Responses

Response samples

Content type
application/json
{
  • "simulationTimes": [
    ],
  • "gIds": [
    ]
}

Cells

Returns the cells and their properties that are present in the connected Arbor simulation.

Responses

Response samples

Content type
application/json
{
  • "cells": [
    ]
}

Cell Infos

Returns an overview of the cells present in the simulation.

Responses

Response samples

Content type
application/json
{
  • "CellInfos": [
    ]
}

Nest

Kernel Status

Retrieves the current status of the NEST kernel.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Multimeters

Retrieves a list with information about all available multimeters and their properties. Additionally, the ids of the nodes that are connected to the multimeter are returned.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Multimeter Properties

Retrieves information about a specific multimeter that and its properties.

path Parameters
multimeterId
required
integer <uint64>

The identifier of the multimeter.

Responses

Response samples

Content type
application/json
{
  • "multimeterId": 10,
  • "attributes": [
    ],
  • "nodeIds": [
    ]
}

Mutlimeter Measurements By MultimeterId

path Parameters
multimeterId
required
integer <uint64>

The multimeter to query

attributeName
required
string

The attribute to query (e.g., 'V_m' for the membrane potential)

query Parameters
fromTime
number <double>

The start time (including) to be queried.

toTime
number <double>

The end time (excluding) to be queried.

nodeIds
Array of integers <uint64> [ items <uint64 > ]

A list of node IDs queried for attribute data.

skip
integer <uint64>

The offset into the result.

top
integer <uint64>

The maximum number of entries to be returned.

Responses

Response samples

Content type
application/json
{
  • "simulationTimes": [
    ],
  • "nodeIds": [
    ],
  • "values": [
    ]
}

Node Collections

Retrieves an list of all node collections. Returned are the node collection IDs, which nodes are part of the collection and which model is used by the collection.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Nodes In Node Collection

Retrieves the list of all nodes within the specified node collection.

path Parameters
nodeCollectionId
required
integer <uint64>

The identifier of the node collection

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Node Ids In Node Collection

Retrieves the list of all node ids within the node collection.

path Parameters
nodeCollectionId
required
integer <uint64>

The identifier of the node collection

Responses

Response samples

Content type
application/json
[
  • 1,
  • 2
]

Spikes By Node Collection ID

Retrieves the spikes for the given simulation steps (optional) and node collection. This request merges the spikes recorded by all spike detectors and removes duplicates.

path Parameters
nodeCollectionId
required
integer <uint64>

The identifier of the node collection.

query Parameters
fromTime
number <double>

The start time (including) to be queried.

toTime
number <double>

The end time (excluding) to be queried.

skip
integer <uint64>

The offset into the result.

top
integer <uint64>

The maximum numbers of entries to be returned.

Responses

Response samples

Content type
application/json
{
  • "simulationTimes": [
    ],
  • "nodeIds": [
    ],
  • "lastFrame": false
}

Nodes

Retrieves all nodes that are part of the simulation.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Node Ids

Retrieves a list with the IDs of all node that are part of the simulation.

Responses

Response samples

Content type
application/json
[
  • 1,
  • 2,
  • 3,
  • 4
]

Node Properties By Node ID

Retrieves the properties of the specified node.

path Parameters
nodeId
required
integer <uint64>

The ID of the queried node.

Responses

Response samples

Content type
application/json
{
  • "nodeId": 1,
  • "nodeCollectionId": 0,
  • "simulationNodeId": 0,
  • "position": [
    ],
  • "model": "iaf_psc_delta",
  • "status": {
    }
}

Simulation Time Info

Retrieves simulation time information (stepSize, begin, current, end).

Responses

Response samples

Content type
application/json
{
  • "stepSize": 0.1,
  • "current": 2.1,
  • "begin": 0.1,
  • "end": 4.5
}

Spike Recorders

Queries all spike recorders that are available via the pipeline.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Spike Detectors Deprecated

DEPRECATED: USE /nest/spikerecorders INSTEAD.
Queries all spike detectors that are available via the pipeline.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Spikes By Spike Recorder Id

Retrieves the spikes for the given time range (optional) and node IDs (optional) from one spike recorder. If no time range or node list is specified, it will return the spikes for whole time or all nodes respectively.

path Parameters
spikerecorderId
required
integer <uint64>

The ID of the spike detector to query.

query Parameters
fromTime
number <double>

The start time in milliseconds (including) to be queried.

toTime
number <double>

The end time in milliseconds (excluding) to be queried.

nodeIds
Array of integers <uint64> [ items <uint64 > ]

A list of node IDs queried for spike data.

skip
integer <uint64>

The offset into the result.

top
integer <uint64>

The maximum number of entries to be returned.

Responses

Response samples

Content type
application/json
{
  • "simulationTimes": [
    ],
  • "nodeIds": [
    ],
  • "lastFrame": false
}

Spikes By Spikedetector Id Deprecated

Retrieves the spikes for the given time range (optional) and node IDs (optional) from one spike detector. If no time range or node list is specified, it will return the spikes for whole time or all nodes respectively.

path Parameters
spikedetectorId
required
integer <uint64>

The ID of the spike detector to query.

query Parameters
fromTime
number <double>

The start time in milliseconds (including) to be queried.

toTime
number <double>

The end time in milliseconds (excluding) to be queried.

nodeIds
Array of integers <uint64> [ items <uint64 > ]

A list of node IDs queried for spike data.

skip
integer <uint64>

The offset into the result.

top
integer <uint64>

The maximum number of entries to be returned.

Responses

Response samples

Content type
application/json
{
  • "simulationTimes": [
    ],
  • "nodeIds": [
    ],
  • "lastFrame": false
}

Spikes

Retrieves the spikes for the given time range (optional) and node IDs (optional). If no time range or node list is specified, it will return the spikes for whole time or all nodes respectively. This request merges the spikes recorded by all spike detectors and removes duplicates.

query Parameters
fromTime
number <double>

The start time in milliseconds (including) to be queried.

toTime
number <double>

The end time in milliseconds (excluding) to be queried.

nodeIds
Array of integers <uint64> [ items <uint64 > ]

A list of node IDs queried for spike data.

skip
integer <uint64>

The offset into the result.

top
integer <uint64>

The maximum number of entries to be returned.

Responses

Response samples

Content type
application/json
{
  • "simulationTimes": [
    ],
  • "nodeIds": [
    ],
  • "lastFrame": false
}

General

Versions

Returns the deployed insite and API versions.

Responses

Response samples

Content type
application/json
{
  • "api": {
    },
  • "insite": "4.6"
}