ControlUp Session API

Session statistics report

Business capability
IT Operations Management BC-600.40

Operations 4

GET /v1/sessions Get session statistics #
GET /v1/sessions/timeline/{sessionUid} Get session timeline #
GET /v1/sessions/details Get individual session details #
GET /v1/sessions/aggregated Get aggregated session activity #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/controlup-session-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

controlup-session-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: VDI & DAAS Session API
  version: 1.0.0
  description: Session statistics report
servers:
- url: https://api.controlup.com/historical
security:
- bearer-jwt:
  - read
  - write
tags:
- name: Session
  description: Session statistics report
paths:
  /v1/sessions:
    get:
      tags:
      - Session
      summary: Get session statistics
      description: Returns statistics for all user sessions. Visit the <a href='https://support.controlup.com/docs/user-sessions-activity-report' target='_blank'>Session Activity Report</a> documentation for column descriptions and more details.
      operationId: getSessionsStatistics
      parameters:
      - name: presetType
        in: query
        description: Set the type of statistics to return for each user session.
        required: true
        schema:
          type: string
          enum:
          - activity
          - client
          - cvad
          - horizon
          - resources
          - ux
          - list
      - name: userAccount
        in: query
        description: Filter sessions by user account, provided in the Domain\username format.
        required: false
        schema:
          type: string
      - name: userName
        in: query
        description: Filter sessions by user display name (partial match, e.g. 'John Doe'). If both userName and userAccount are provided, userAccount takes precedence.
        required: false
        schema:
          type: string
        example: John Doe
      - name: serverName
        in: query
        description: Filter sessions by server name. This parameter is only applicable when the preset is set to LIST.
        required: false
        schema:
          type: string
      - name: _timeFrom
        in: query
        description: 'Start date and time of the search period in the format: YYYY-MM-DD''T''hh:mm:ss.sssZ'
        required: true
        schema:
          type: string
          format: date-time
        example: '2025-02-01T00:00:00.000Z'
      - name: _timeTo
        in: query
        description: 'End date and time of the search period in the format: YYYY-MM-DD''T''hh:mm:ss.sssZ'
        required: true
        schema:
          type: string
          format: date-time
        example: '2025-02-02T00:00:00.000Z'
      - name: logonDurationgt
        in: query
        description: Minimum logon duration in seconds
        required: false
        schema:
          type: integer
          format: int32
      - name: logonDurationlt
        in: query
        description: Maximum logon duration in seconds
        required: false
        schema:
          type: integer
          format: int32
      - name: _page
        in: query
        description: The page number returned. The first page is 1.
        schema:
          type: integer
          format: int32
          minimum: 1
        example: 1
      - name: _limit
        in: query
        description: The number of items returned per page. Minimum is 1.
        schema:
          type: integer
          format: int32
          maximum: 100000
          minimum: 1
        example: 20
      responses:
        '200':
          description: Successfully retrieved
          content:
            application/json:
              schema:
                type: string
                oneOf:
                - $ref: '#/components/schemas/SessionActivityResponse'
                - $ref: '#/components/schemas/SessionCvadResponse'
                - $ref: '#/components/schemas/SessionHorizonResponse'
                - $ref: '#/components/schemas/SessionResourcesResponse'
                - $ref: '#/components/schemas/SessionUxResponse'
                - $ref: '#/components/schemas/SessionClientResponse'
                - $ref: '#/components/schemas/SessionListResponse'
            application/xml:
              schema:
                type: string
                oneOf:
                - $ref: '#/components/schemas/SessionActivityResponse'
                - $ref: '#/components/schemas/SessionCvadResponse'
                - $ref: '#/components/schemas/SessionHorizonResponse'
                - $ref: '#/components/schemas/SessionResourcesResponse'
                - $ref: '#/components/schemas/SessionUxResponse'
                - $ref: '#/components/schemas/SessionClientResponse'
                - $ref: '#/components/schemas/SessionListResponse'
        '400':
          description: Bad Request - one of the inputs isn't correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '401':
          description: User is not authorized to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '403':
          description: Authorization details are not provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '501':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '504':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
  /v1/sessions/timeline/{sessionUid}:
    get:
      tags:
      - Session
      summary: Get session timeline
      description: Returns the timeline of session state changes for a specific session.
      operationId: getSessionTimeline
      parameters:
      - name: sessionUid
        in: path
        description: Session UID to get timeline for
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successfully retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionTimelineResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SessionTimelineResponse'
        '400':
          description: Bad Request - one of the inputs isn't correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '401':
          description: User is not authorized to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '403':
          description: Authorization details are not provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '501':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '504':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
  /v1/sessions/details:
    get:
      tags:
      - Session
      summary: Get individual session details
      description: Returns activity details of individual session. Visit the <a href='https://support.controlup.com/docs/user-sessions-activity-report' target='_blank'>Session Activity Report</a> documentation for column descriptions and more details.
      operationId: getSessionDetails
      parameters:
      - name: machineName
        in: query
        description: The name of virtual machine.
        required: true
        schema:
          type: string
      - name: computerId
        in: query
        description: The name of virtual machine.
        required: true
        schema:
          type: string
      - name: sessionUid
        in: query
        description: Session uid used to identify a session. This value is returned in the session statistics.
        required: true
        schema:
          type: integer
          format: int64
      - name: isNormalLogoff
        in: query
        description: Was logoff explicit.
        required: true
        schema:
          type: boolean
      - name: sessionStartDateTime
        in: query
        description: Start datetime of requested session details.
        required: true
        schema:
          type: string
      - name: sessionEndDateTime
        in: query
        description: End datetime of requested session details.
        required: false
        schema:
          type: string
      - name: _page
        in: query
        description: The page number returned. The first page is 1.
        schema:
          type: integer
          format: int32
          minimum: 1
        example: 1
      - name: _limit
        in: query
        description: The number of items returned per page. Minimum is 1.
        schema:
          type: integer
          format: int32
          maximum: 100000
          minimum: 1
        example: 20
      responses:
        '200':
          description: Successfully retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionDetailsEventsResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SessionDetailsEventsResponse'
        '400':
          description: Bad Request - one of the inputs isn't correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '401':
          description: User is not authorized to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '403':
          description: Authorization details are not provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '501':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '504':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
  /v1/sessions/aggregated:
    get:
      tags:
      - Session
      summary: Get aggregated session activity
      description: Returns aggregated session activity metrics (avg/min/max/count) grouped by a single session dimension such as folder, delivery group, site, user, protocol, or initial program. Visit the <a href='https://support.controlup.com/docs/user-sessions-activity-report' target='_blank'>Session Activity Report</a> documentation for column descriptions and more details.
      operationId: getSessionsAggregated
      parameters:
      - name: groupBy
        in: query
        description: Single session dimension to group rows by.
        required: true
        schema:
          type: string
          enum:
          - folderPath
          - folderId
          - deliveryGroup
          - deliveryGroupId
          - eucSiteName
          - eucSiteId
          - cvadSiteName
          - horizonSite
          - userAccount
          - userFullName
          - protocol
          - initialProgram
      - name: metrics
        in: query
        description: One or more session metrics to aggregate. Repeat the parameter for multiple values.
        required: true
        schema:
          type: array
          items:
            type: string
            enum:
            - duration_in_seconds
            - logon_duration
            - profile_load_time
            - desktop_load_time
            - group_policy_load_time
            - logon_duration_other
            - cvad_logon_duration
            - cvad_profile_load_time
            - cvad_group_policy_load_time
            - session_protocol_latency_avg
            - session_protocol_latency_max
            - session_protocol_latency_min
            - rtt_avg
            - rtt_max
            - rtt_min
            - active_time_in_seconds
            - idle_time_in_seconds
            - disconnected_time_in_seconds
      - name: aggregations
        in: query
        description: 'Aggregation functions to apply to each metric. Repeat for multiple. Default: avg.'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - avg
            - min
            - max
            - count
      - name: _sortBy
        in: query
        description: 'Response field to sort by (must equal a returned <metric>_<aggregation>, session_count, or the groupBy field). Default: <first metric>_<first aggregation>.'
        required: false
        schema:
          type: string
      - name: _sortOrder
        in: query
        description: 'Sort order. Default: desc.'
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
      - name: _timeFrom
        in: query
        description: 'Start date and time of the search period in the format: YYYY-MM-DD''T''hh:mm:ss.sssZ'
        required: true
        schema:
          type: string
          format: date-time
        example: '2025-02-01T00:00:00.000Z'
      - name: _timeTo
        in: query
        description: 'End date and time of the search period in the format: YYYY-MM-DD''T''hh:mm:ss.sssZ'
        required: true
        schema:
          type: string
          format: date-time
        example: '2025-02-02T00:00:00.000Z'
      - name: userAccount
        in: query
        description: Filter sessions by user account, provided in the Domain\username format.
        required: false
        schema:
          type: string
      - name: serverName
        in: query
        description: Filter sessions by server name.
        required: false
        schema:
          type: string
      - name: logonDurationgt
        in: query
        description: Minimum logon duration in seconds (pre-aggregation filter).
        required: false
        schema:
          type: integer
          format: int32
      - name: logonDurationlt
        in: query
        description: Maximum logon duration in seconds (pre-aggregation filter).
        required: false
        schema:
          type: integer
          format: int32
      - name: _page
        in: query
        description: The page number returned. The first page is 1.
        schema:
          type: integer
          format: int32
          minimum: 1
        example: 1
      - name: _limit
        in: query
        description: The number of items returned per page. Minimum is 1.
        schema:
          type: integer
          format: int32
          maximum: 100000
          minimum: 1
        example: 20
      responses:
        '200':
          description: Successfully retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionAggregatedResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SessionAggregatedResponse'
        '400':
          description: Bad Request - one of the inputs isn't correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '401':
          description: User is not authorized to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '403':
          description: Authorization details are not provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '501':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
        '504':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/HistoricalErrorResponse'
components:
  schemas:
    SessionDetailsResult:
      type: object
      properties:
        session_events:
          type: array
          items:
            $ref: '#/components/schemas/SessionState'
        session_client_info:
          type: array
          items:
            $ref: '#/components/schemas/SessionClientInfo'
        active_apps:
          type: array
          items:
            $ref: '#/components/schemas/ActiveApp'
        active_urls:
          type: array
          items:
            $ref: '#/components/schemas/ActiveUrl'
    ActiveUrl:
      type: object
      properties:
        active_url:
          type: string
        start_time:
          type: string
        end_time:
          type: string
    SessionAggregatedResult:
      type: object
      description: Aggregated session activity row. The exact set of fields returned depends on the requested groupBy, metrics and aggregations. Each request returns the group field, session_count, and one column per <metric>_<aggregation> combination.
      properties:
        session_count:
          type: integer
          format: int64
          description: Number of distinct sessions in the group (COUNT(DISTINCT session_uid)). Always returned.
        folder_path:
          type: string
          description: Folder path the session belonged to. Present when groupBy=folderPath.
        folder_id:
          type: integer
          format: int64
          description: 'Folder identifier. Present when groupBy=folderId. Numeric: folder ids fit within the 32-bit range, so they are not affected by the large-id precision issue (bug #310813).'
        initial_cvad_delivery_group:
          type: string
          description: CVAD delivery group display name. Present when groupBy=deliveryGroup. CVAD-only.
        initial_cvad_delivery_group_id:
          type: string
          description: 'CVAD delivery group identifier. Present when groupBy=deliveryGroupId. CVAD-only. Returned as a string: this is a 64-bit hash-based id that exceeds JavaScript''s safe integer range (bug #310813).'
        euc_site_name:
          type: string
          description: EUC site display name. Present when groupBy=eucSiteName.
        euc_site_id:
          type: string
          description: 'EUC site identifier. Present when groupBy=eucSiteId. Returned as a string: this is a 64-bit hash-based id that exceeds JavaScript''s safe integer range (bug #310813).'
        initial_cvad_site_name:
          type: string
          description: CVAD site display name. Present when groupBy=cvadSiteName. CVAD-only.
        hz_site:
          type: string
          description: Horizon site name. Present when groupBy=horizonSite. Horizon-only.
        user_account:
          type: string
          description: User account in Domain\username form. Present when groupBy=userAccount.
        user_full_name:
          type: string
          description: User full display name. Present when groupBy=userFullName. Not available from session_aggregation_30d.
        protocol_name:
          type: string
          description: Display name of the connection protocol. Present when groupBy=protocol.
        initial_program:
          type: string
          description: Initial program for the session. Present when groupBy=initialProgram. Not available from session_aggregation_30d.
        duration_in_seconds_avg:
          type: integer
          format: int64
          description: Aggregated duration_in_seconds. Suffix matches the requested aggregation (e.g. duration_in_seconds_avg).
        duration_in_seconds_min:
          type: integer
          format: int64
        duration_in_seconds_max:
          type: integer
          format: int64
        duration_in_seconds_count:
          type: integer
          format: int64
        logon_duration_avg:
          type: integer
          format: int64
          description: Aggregated logon_duration. Suffix matches the requested aggregation (e.g. logon_duration_max).
        logon_duration_min:
          type: integer
          format: int64
        logon_duration_max:
          type: integer
          format: int64
        logon_duration_count:
          type: integer
          format: int64
        profile_load_time_avg:
          type: integer
          format: int64
        profile_load_time_min:
          type: integer
          format: int64
        profile_load_time_max:
          type: integer
          format: int64
        profile_load_time_count:
          type: integer
          format: int64
        desktop_load_time_avg:
          type: integer
          format: int64
        desktop_load_time_min:
          type: integer
          format: int64
        desktop_load_time_max:
          type: integer
          format: int64
        desktop_load_time_count:
          type: integer
          format: int64
        group_policy_load_time_avg:
          type: integer
          format: int64
        group_policy_load_time_min:
          type: integer
          format: int64
        group_policy_load_time_max:
          type: integer
          format: int64
        group_policy_load_time_count:
          type: integer
          format: int64
        logon_duration_other_avg:
          type: integer
          format: int64
        logon_duration_other_min:
          type: integer
          format: int64
        logon_duration_other_max:
          type: integer
          format: int64
        logon_duration_other_count:
          type: integer
          format: int64
        cvad_logon_duration_avg:
          type: integer
          format: int64
        cvad_logon_duration_min:
          type: integer
          format: int64
        cvad_logon_duration_max:
          type: integer
          format: int64
        cvad_logon_duration_count:
          type: integer
          format: int64
        cvad_profile_load_time_avg:
          type: integer
          format: int64
        cvad_profile_load_time_min:
          type: integer
          format: int64
        cvad_profile_load_time_max:
          type: integer
          format: int64
        cvad_profile_load_time_count:
          type: integer
          format: int64
        cvad_group_policy_load_time_avg:
          type: integer
          format: int64
        cvad_group_policy_load_time_min:
          type: integer
          format: int64
        cvad_group_policy_load_time_max:
          type: integer
          format: int64
        cvad_group_policy_load_time_count:
          type: integer
          format: int64
        session_protocol_latency_avg_avg:
          type: integer
          format: int64
        session_protocol_latency_avg_min:
          type: integer
          format: int64
        session_protocol_latency_avg_max:
          type: integer
          format: int64
        session_protocol_latency_avg_count:
          type: integer
          format: int64
        session_protocol_latency_max_avg:
          type: integer
          format: int64
        session_protocol_latency_max_min:
          type: integer
          format: int64
        session_protocol_latency_max_max:
          type: integer
          format: int64
        session_protocol_latency_max_count:
          type: integer
          format: int64
        session_protocol_latency_min_avg:
          type: integer
          format: int64
        session_protocol_latency_min_min:
          type: integer
          format: int64
        session_protocol_latency_min_max:
          type: integer
          format: int64
        session_protocol_latency_min_count:
          type: integer
          format: int64
        rtt_avg_avg:
          type: integer
          format: int64
        rtt_avg_min:
          type: integer
          format: int64
        rtt_avg_max:
          type: integer
          format: int64
        rtt_avg_count:
          type: integer
          format: int64
        rtt_max_avg:
          type: integer
          format: int64
        rtt_max_min:
          type: integer
          format: int64
        rtt_max_max:
          type: integer
          format: int64
        rtt_max_count:
          type: integer
          format: int64
        rtt_min_avg:
          type: integer
          format: int64
        rtt_min_min:
          type: integer
          format: int64
        rtt_min_max:
          type: integer
          format: int64
        rtt_min_count:
          type: integer
          format: int64
        active_time_in_seconds_avg:
          type: integer
          format: int64
        active_time_in_seconds_min:
          type: integer
          format: int64
        active_time_in_seconds_max:
          type: integer
          format: int64
        active_time_in_seconds_count:
          type: integer
          format: int64
        idle_time_in_seconds_avg:
          type: integer
          format: int64
        idle_time_in_seconds_min:
          type: integer
          format: int64
        idle_time_in_seconds_max:
          type: integer
          format: int64
        idle_time_in_seconds_count:
          type: integer
          format: int64
        disconnected_time_in_seconds_avg:
          type: integer
          format: int64
        disconnected_time_in_seconds_min:
          type: integer
          format: int64
        disconnected_time_in_seconds_max:
          type: integer
          format: int64
        disconnected_time_in_seconds_count:
          type: integer
          format: int64
    SessionClientResponse:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/UserMetadata'
        data:
          type: array
          items:
            $ref: '#/components/schemas/SessionClientResult'
    SessionTimelineResponse:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/UserMetadata'
        data:
          $ref: '#/components/schemas/SessionTimelineResult'
    SessionListResponse:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/UserMetadata'
        data:
          type: array
          items:
            $ref: '#/components/schemas/SessionListResult'
    ActiveApp:
      type: object
      properties:
        active_app:
          type: string
        start_time:
          type: string
        end_time:
          type: string
    UserMetadata:
      type: object
      properties:
        orgId:
          type: string
        infraGuid:
          type: string
        region:
          type: string
        userId:
          type: string
        total:
          type: integer
          format: int64
        limitPerPage:
          type: integer
          format: int32
        currentPageNumber:
          type: integer
          format: int32
        currentPageSize:
          type: integer
          format: int32
        remaining:
          type: integer
          format: int64
        userEmail:
          type: string
        truncated:
          type: boolean
        truncationLimit:
          type: integer
          format: int32
        timeFrom:
          type: string
        timeTo:
          type: string
    SessionResourcesResult:
      type: object
      properties:
        user_name:
          type: string
        logoff_time:
          type: string
        user_full_name:
          type: string
        session_id:
          type: string
        login_time:
          type: string
        logon_duration:
          type: integer
          format: int64
        session_protocol_latency_avg:
          type: integer
          format: int64
        initial_program:
          type: string
        initial_client_ip:
          type: string
        user_ad_ou:
          type: string
        initial_client_branch_name:
          type: string
        session_protocol_bandwidth_usage_avg:
          type: integer
          format: int64
        session_protocol_bandwidth_usage_max:
          type: integer
          format: int64
        rtt_avg:
          type: integer
          format: int64
        session_protocol_latency_max:
          type: integer
          format: int64
        cpu_usage_avg:
          type: integer
          format: int64
        gpu_cpu_utilization_avg:
          type: integer
          format: int64
        memory_usage_avg:
          type: integer
          format: int64
        desktop_load_time:
          type: integer
          format: int64
   

# --- truncated at 32 KB (46 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/controlup/refs/heads/main/openapi/controlup-session-api-openapi.yml