# Sessions

Sessions are tracking user actions regarding pushing and pulling video data to and from the core. There are different kind of sessions that are captured:

* HLS Sessions (`hls` collector)\
  How many users are watching an HLS stream
* HLS Ingress Sessions (`hlsingress` collector)\
  How many users are publishing a stream via the in-memory filesystem
* HTTP Sessions (`http` collector)\
  How many users are reading or writing http data via the build-in HTTP server
* RTMP Sessions (`rtmp` collector)\
  How many users are publishing or watching a stream via the built-in RTMP server
* SRT Sessions (`srt` collector)\
  How many users are publishing or watching a stream via the built-in SRT server
* FFmpeg Sessions (`ffmpeg` collector)\
  How many streams is FFmpeg using as an input or as an output

The data for each session include the current ingress and egress bandwidth, the total amount of data, an identifier for the session itself, the local end of the stream and the remote end of the stream.

The following API endpoints allow to extract information about the currently active sessions or additionally a summary of the already finished sessions. Each endpoint requires a comma-separated list of collectors as query parameter `collectors`.

## Active sessions with summary

Example:

{% tabs %}
{% tab title="Curl" %}

```bash
curl http://127.0.0.1:8080/api/v3/session?collectors=hls,rtmp \
   -H 'accept: application/json' \
   -H 'Content-Type: application/json' \
   -X GET
```

{% endtab %}

{% tab title="PyClient" %}

```python
from core_client import Client

client = Client(
    base_url="http://127.0.0.1:8080"
)
client.login()

core_sessions = client.v3_session_get(
    collectors="hls,rtmp"
)
print(core_sessions)
```

{% endtab %}

{% tab title="GoClient" %}

```go
import (
    "fmt"
    "github.com/datarhei/core-client-go/v16"
)

client, _ := coreclient.New(coreclient.Config{
    Address: "https://127.0.0.1:8080",
})

sessions, err := client.Sessions([]string{"hls", "rtmp"})
fmt.Printf("%+v\n", sessions)
```

{% endtab %}
{% endtabs %}

Description:

{% openapi src="<https://demo.datarhei.com/api/swagger/doc.json>" path="/api/v3/session" method="get" %}
<https://demo.datarhei.com/api/swagger/doc.json>
{% endopenapi %}

## Active sessions &#x20;

Example:

{% tabs %}
{% tab title="Curl" %}

```bash
curl http://127.0.0.1:8080/api/v3/session/active?collectors=hls,rtmp \
   -H 'accept: application/json' \
   -H 'Content-Type: application/json' \
   -X GET
```

{% endtab %}

{% tab title="PyClient" %}

```python
from core_client import Client

client = Client(
    base_url="http://127.0.0.1:8080"
)
client.login()

core_active_sessions = client.v3_session_get_active(
    collectors="hls,rtmp"
)
print(core_active_sessions)
```

{% endtab %}

{% tab title="GoClient" %}

```go
import (
    "fmt"
    "github.com/datarhei/core-client-go/v16"
)

client, _ := coreclient.New(coreclient.Config{
    Address: "https://127.0.0.1:8080",
})

sessions, err := client.SessionsActive([]string{"hls", "rtmp"})
fmt.Printf("%+v\n", sessions)
```

{% endtab %}
{% endtabs %}

Description:

{% openapi src="<https://demo.datarhei.com/api/swagger/doc.json>" path="/api/v3/session/active" method="get" %}
<https://demo.datarhei.com/api/swagger/doc.json>
{% endopenapi %}
