---
title: "Functions and Data Structures"
canonical: "https://docs.cuesystem.com/space/CVCDD/1956282369/Functions%20and%20Data%20Structures"
format: markdown
---
## Driver Version 


 Version 1.60+

# Functions

## General Info

All functions are executing the command set fully described in document:

## Panopto Public API   

  [https://demo.hosted.panopto.com/Panopto/Api/Docs/index.html](https://demo.hosted.panopto.com/Panopto/Api/Docs/index.html) 

refer to [this documentation](https://demo.hosted.panopto.com/Panopto/Api/Docs/index.html) for any details.


All communication is based on HTTPS methods GET,PUT,POST and DELETE .

 The HTTPS return values are available in ByRef parameters bellow:

## > Macro (anchor)

Common Parameters


nRespCode

<u>[Long](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Long)</u> -HTTP return codes (200- OK success, 404- Not Found….))

tRespBody

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> Optional Text variable to store the full body of HTTP response for currently executed command. Mostly the response data are formated as JSON and can contain in some situations more informations than contained in Response structure.- If this info is needed then use this optional parameter

The functions return value:  

#### Return value

<u>[Boolean](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Boolean)</u> True on success or False if an error occurs.


---

## CheckCommunicationWithServer

This function returns info for specific folder

#### Syntax


```visualbasic
CheckCommunicationWithServer ( ) As Boolean
Var b As Boolean
```

#### Return value

<u>[Boolean](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Boolean)</u> True on success or False if an error occurs.

#### Example

```visualbasic
if Not Digital_Video_Record1.CheckCommunicationWithServer () Then
```

## Folders_GetChildFolders

This function returns list of child folders

#### Syntax

```visualbasic
Folders_GetChildFolders(tFolderId As Text, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfFolder, Optional nPage As Long := 0, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tFolderId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> -Folder Id 

Response

sListResponseOfFolder  -structure see  [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

nPage

<u>[Long](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Long)</u> Optional, defaults 0  In case the list contains more items than ITEMS_PER_PAGE see  then list will be spread into more pages (- each containing max ITEMS_PER_PAGE items). This parameter nPage allows fetch specific page containing such list part. 

nPage values 0,1,2,3,4….

tRespBody, nRespCode, Return Value see [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tFolderId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfFolder

Digital_Video_Record1.Folders_GetChildFolders( tFolderId, nHttpCode,MyResponse, 0, tBody)
```

## Folders_GetChildFoldersIncluding

This function returns list of child folders including PersonalFolders and MyFolders (selectable)

#### Syntax

```visualbasic
Folders_GetChildFoldersIncluding(tFolderId As Text, bIncludingMyFolders As Boolean,
  bIncludingPersonalFolders  As Boolean,  
  ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfFolder, Optional nPage As Long := 0, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tFolderId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> -Folder Id 

bIncludingMyFolders

<u>[Boolean](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Boolean)</u>  

bIncludingPersonalFolders

<u>[Boolean](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Boolean)</u>  

Response

sListResponseOfFolder  -structure see  [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

nPage

<u>[Long](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Long)</u> Optional, defaults 0  In case the list contains more items than ITEMS_PER_PAGE see  then list will be spread into more pages (- each containing max ITEMS_PER_PAGE items). This parameter nPage allows fetch specific page containing such list part. 

nPage values 0,1,2,3,4….

tRespBody, nRespCode, Return Value see [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tFolderId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfFolder

Digital_Video_Record1.Folders_GetChildFoldersIncluding( tFolderId, True, True,
  nHttpCode,MyResponse, 0, tBody)
```

> Macro (toc)

## Folders_GetFolderById

This function returns info for specific folder

#### Syntax


```visualbasic
Folders_GetFolderById(tFolderId As Text, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sFolder, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tFolderId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> -Folder Id

Response

sFolder -structure see [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

tRespBody, nRespCode, Return Value see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tFolderId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sFolder

Digital_Video_Record1.Folders_GetFolderById( tFolderId , nHttpCode,MyResponse, tBody)
```

## Folders_GetSessions

This function returns list of sessions in specific folder

#### Syntax

```visualbasic
Folders_GetSessions(tFolderId As Text, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfSession, Optional nPage As Long := 0, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tFolderId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  -Folder Id 

Response

sListResponseOfSession -structure see [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)


nPage

<u>[Long](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Long)</u> Optional, defaults 0  In case the list contains more items than ITEMS_PER_PAGE(see [https://cue.atlassian.net/wiki/spaces/CVCDD/pages/edit-v2/1473871913#Constants-and-Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/edit-v2/1473871913#Constants-and-Structures)) then list will be spread into more pages (- each containing max ITEMS_PER_PAGE items). This parameter nPage allows fetch specific page containing such list part. 

nPage values 0,1,2,3,4….

tRespBody, nRespCode, Return Value- see [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tFolderId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfSession

Digital_Video_Record1.Folders_GetSessions( tFolderId, nHttpCode,MyResponse,0, tBody)
```

## Folders_SearchByKeyword

This function returns list of folders which name containing specific text

#### Syntax

```visualbasic
Folders_SearchByKeyword(tKeyword As Text, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfFolder, Optional nPage As Long := 0, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tKeyword

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  -text to find 

Response

sListResponseOfFolder -structure see [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

nPage

<u>[Long](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Long)</u> Optional, defaults 0  In case the list contains more items than ITEMS_PER_PAGE(see [https://cue.atlassian.net/wiki/spaces/CVCDD/pages/edit-v2/1473871913#Constants-and-Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/edit-v2/1473871913#Constants-and-Structures)) then list will be spread into more pages (- each containing max ITEMS_PER_PAGE items). This parameter nPage allows fetch specific page containing such list part. 

nPage values 0,1,2,3,4….

tRespBody, nRespCode, Return Value- see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfFolder

Digital_Video_Record1.Folders_SearchByKeyword( "XXX", nHttpCode,MyResponse, 0, tBody)
```

## GetProperties

This function returns properties values of this current instance of Panopto driver. The properties values for each instance are specified in CVC Configuration.

#### Syntax

```visualbasic
GetProperties(ByRef Properties As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sProperties)
```

#### Parameters

Properties

sProperties -structure see [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

#### Example

```visualbasic
Var Properties As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sProperties

Digital_Video_Record1.GetProperties(Properties)
DebugPrintFormat ("ServerUrl: {t}",Properties.ServerUrl)
```


## PanoptoTimeToTime

This function is converting texts with Time information used in Panopto structures (ISO 8601 standard) into <u>[Time](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Time)</u> 

#### Syntax

```visualbasic
PanoptoTimeToTime(tPanoptoTime As Text, ByRef mTime As Time, Optional IsTimeUTC As Boolean := True)
```

#### Parameters

tPanoptoTime

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> -text with Time information used in Panopto structures(ISO 8601 standard)

mTime

<u>[Time](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Time)</u> - result time 

IsTimeUTC

<u>[Boolean](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Boolean)</u> Optional, default: True - allows to specify if result time is to be UTC  or Local time 

#### Example

```visualbasic
Var tStartTime As Text := "2025-09-11T12:18:01.6261008Z"
Var	mStartTimeUTC As Time
Digital_Video_Record1.PanoptoTimeToTime(tStartTime,mStartTimeUTC, True)
```

## RemoteRecorders_SearchForRemoteRecorders

This function retuns list of Remote Recorders which name contains specific text

#### Syntax

```visualbasic
RemoteRecorders_SearchForRemoteRecorders(tKeyword As Text, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfRemoteRecorder, Optional nPage As Long := 0, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tKeyword

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> -text to find

Response

sListResponseOfRemoteRecorder -structure see [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

nPage

<u>[Long](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Long)</u> Optional, defaults 0  In case the list contains more items than ITEMS_PER_PAGE(see  [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)) then list will be spread into more pages (- each containing max ITEMS_PER_PAGE items). This parameter nPage allows fetch specific page containing such list part. 

nPage values 0,1,2,3,4….

tRespBody, nRespCode, Return Value- see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var MyResp 		As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfRemoteRecorder

Digital_Video_Record1.RemoteRecorders_SearchForRemoteRecorders( "X123", nHttpCode, MyResp,0)
```

## RemoteRecorderStateNumberToStateText

This function is convertinf Remote Recorder State number into text describing the status meaning:

"Stopped", "Previewing", "Recording", "Paused", "Faulted", "Disconnected", "RecorderRunning"

#### Syntax

```visualbasic
RemoteRecorderStateNumberToStateText(nState As Long, ByRef txt As Text)
```

#### Parameters

nState

<u>[Long](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Long)</u> - state number

txt

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> - state in text ("Stopped", "Previewing", "Recording", "Paused", "Faulted", "Disconnected", "RecorderRunning")

#### Example

```visualbasic
Var tStatus As Text[255]

Digital_Video_Record1.RemoteRecorderStateNumberToStateText( 2, tStatus)
```

## ScheduledRecordings_CreateScheduledRecording

This function creates new scheduled recording

#### Syntax

```visualbasic
ScheduledRecordings_CreateScheduledRecording(newScheduledRecordingCreate As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sScheduledRecordingCreate1, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sScheduledRecording, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

newScheduledRecordingCreate

sScheduledRecordingCreate1 -structure see [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)


Response

sScheduledRecording -structure see   [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

tRespBody, nRespCode, Return Value- see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)


#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tFolderId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyCreateData As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sScheduledRecordingCreate1
Var MyResult As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sScheduledRecording

MyCreateData.Name		:= "Lesson007"
MyCreateData.StartTime	:= "2025-09-11T12:18:01.000000Z"
MyCreateData.EndTime	:= "2025-09-11T13:18:01.000000Z"
MyCreateData.Recorders[1].RemoteRecorderId := "abcde000-0abc-bda0-9c1c-c01234567890"
MyCreateData.Recorders[1].SuppressPrimary := False
MyCreateData.Recorders[1].SuppressSecondary := True
MyCreateData.FolderId 	:= "a01abcde-0abc-bda0-9c1c-c01234567890"
MyCreateData.IsBroadcast:= False

Digital_Video_Record1.ScheduledRecordings_CreateScheduledRecording( MyCreateData,nHttpCode, MyResult,tBody )
```

## ScheduledRecordings_DeleteScheduledRecordingById

This function Deletes specific scheduled recording

#### Syntax

```visualbasic
ScheduledRecordings_DeleteScheduledRecordingById(tSessionId As Text, ByRef nRespCode As Long, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tSessionId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> - Session Id

tRespBody, nRespCode, Return Value- see [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tSessionId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sScheduledRecording

Digital_Video_Record1.ScheduledRecordings_GetScheduledRecordingById( tSessionId,nHttpCode,MyResponse,tBody)
```

## ScheduledRecordings_GetScheduledRecordingById

This function returns info for specific scheduled recordig

#### Syntax

```visualbasic
ScheduledRecordings_GetScheduledRecordingById(tSessionId As Text, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sScheduledRecording, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tSessionId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  - Session Id

Response

sScheduledRecording -structure see  [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

tRespBody, nRespCode, Return Value- see [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tSessionId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sScheduledRecording

Digital_Video_Record1.ScheduledRecordings_GetScheduledRecordingById( tSessionId,nHttpCode,MyResponse,tBody)
```

## ScheduledRecordings_UpdateScheduledRecording


This function allows to modify specific scheduled recording

#### Syntax

```visualbasic
ScheduledRecordings_UpdateScheduledRecording(tSessionId As Text, newScheduledRecordingCreateTime As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sScheduledRecordingUpdateTime, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sScheduledRecording, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tSessionId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  - Session Id

newScheduledRecordingUpdateTime

sScheduledRecordingUpdateTime -structure see  [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

Response

sScheduledRecording -structure see  [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

tRespBody, nRespCode, Return Value- see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tSessionId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyUpdateData As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sScheduledRecordingUpdateTime
Var MyResult As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sScheduledRecording

MyUpdateData.StartTime	:= "2025-09-11T12:19:01.000000Z"
MyUpdateData.EndTime	:= "2025-09-11T13:30:01.000000Z"
Digital_Video_Record1.ScheduledRecordings_UpdateScheduledRecording(tSessionId,
							 MyUpdateData,nHttpCode, MyResult, tBody )
```

## Session_GetInProgressRecordings

This function returns list of currently running recordings - Attention: conserns only recording sessions which were set as NOT Webcasting!

#### Syntax

```visualbasic
Session_GetInProgressRecordings(ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfSession, Optional nPage As Long := 0, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

Response

sListResponseOfSession -structure see  [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

nPage

<u>[Long](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Long)</u> Optional, defaults 0  In case the list contains more items than ITEMS_PER_PAGE(see   [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)) then list will be spread into more pages (- each containing max ITEMS_PER_PAGE items). This parameter nPage allows fetch specific page containing such list part. 

nPage values 0,1,2,3,4….


tRespBody, nRespCode, Return Value- see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var MyResult As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfSession

Digital_Video_Record1.Session_GetInProgressRecordings(nHttpCode,MyResult ,0, tBody)
```

## Session_GetInProgressWebcasts

This function returns list of currently running recordings - Attention: conserns only recording sessions which were set as Webcasting!

#### Syntax

```visualbasic
Session_GetInProgressWebcasts(ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfSession, Optional nPage As Long := 0, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

Response

sListResponseOfSession -structure see [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

nPage

<u>[Long](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Long)</u> Optional, defaults 0  In case the list contains more items than ITEMS_PER_PAGE(see   [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)) then list will be spread into more pages (- each containing max ITEMS_PER_PAGE items). This parameter nPage allows fetch specific page containing such list part. 

nPage values 0,1,2,3,4….

tRespBody, nRespCode, Return Value- see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var MyResult As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfSession

Digital_Video_Record1.Session_GetInProgressWebcasts(nHttpCode,MyResult ,0, tBody)
```

## Session_SearchByKeyword

This function returns list of sessions which name contains specific text

#### Syntax

```visualbasic
Session_SearchByKeyword(tKeyword As Text, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfSession, Optional nPage As Long := 0, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tKeyword

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> - text to find 

Response

sListResponseOfSession -structure see [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

nPage

<u>[Long](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Long)</u> Optional, defaults 0  In case the list contains more items than ITEMS_PER_PAGE(see   [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)) then list will be spread into more pages (- each containing max ITEMS_PER_PAGE items). This parameter nPage allows fetch specific page containing such list part. 

nPage values 0,1,2,3,4….

tRespBody, nRespCode, Return Value- see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tSessionId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyResult As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfSession

Digital_Video_Record1.Session_SearchByKeyword( "Lesson0",tSessionId, nHttpCode,  MyResult, tBody)

```

## Sessions_GetSessionById

This function returns info concerning specific session

#### Syntax

```visualbasic
Sessions_GetSessionById(tSessionId As Text, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sSession, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tSessionId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  - Session Id

Response

sSession -structure see  [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

tRespBody, nRespCode, Return Value- see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tSessionId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyResult As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sSession

Digital_Video_Record1.Sessions_GetSessionById( tSessionId, nHttpCode,  MyResult, tBody)
```

## TimeToPanoptoTime

This function converts <u>[Time](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Time)</u> into text containing Time info using format used in Panopto structures

(ISO 8601 standard)

#### Syntax

```visualbasic
TimeToPanoptoTime(mTime As Time, ByRef tPanoptoTime As Text, Optional IsTimeUTC As Boolean := True)
```

#### Parameters

mTime

<u>[Time](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Time)</u> - time to be converted

tPanoptoTime

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> -text with Time information used in Panopto structures(ISO 8601 standard)

IsTimeUTC

<u>[Boolean](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Boolean)</u> Optional, default: True - allows to specify if the param mTime is UTC  or Local time 

#### Example

```visualbasic
Var tStartTime As Text[50] 
Var	mStartLocalTime As Time := #03/14/2025 12:35:05.123456#

Digital_Video_Record1.PanoptoTimeToTime(mStartLocalTime, tStartTime, False)
```

## Users_GetMyViewedSessions

This function returns list of sessions already viewed by current user

#### Syntax

```visualbasic
Users_GetMyViewedSessions(ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfSession, Optional nPage As Long := 0, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

Response

sListResponseOfSession -structure see   [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

nPage

<u>[Long](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Long)</u> Optional, defaults 0  In case the list contains more items than ITEMS_PER_PAGE(see  [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstantsandStructures)) then list will be spread into more pages (- each containing max ITEMS_PER_PAGE items). This parameter nPage allows fetch specific page containing such list part. 

nPage values 0,1,2,3,4….

tRespBody, nRespCode, Return Value- see [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var MyResult As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfSession

Digital_Video_Record1.Users_GetMyViewedSessions( nHttpCode,  MyResult, tBody)
```

## Users_UserSearchByKeyword

This function returns list of users in which names exists specified text

#### Syntax

```visualbasic
Users_UserSearchByKeyword(tKeyword As Text, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfUser, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tKeyword

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> -text to find 

Response

sListResponseOfUser -structure see   [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

tRespBody, nRespCode, Return Value- see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2555]
Var MyResult As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sListResponseOfUser

Digital_Video_Record1.Users_UserSearchByKeyword("X123", nHttpCode,  MyResult, tBody)
```

---

### SOAPapi 4.6

## Panopto SOAP API   

  [https://support.panopto.com/resource/APIDocumentation/Help/html/c40c21c6-dc7a-d822-8c99-b276ee8337c2.htm](https://support.panopto.com/resource/APIDocumentation/Help/html/c40c21c6-dc7a-d822-8c99-b276ee8337c2.htm)

## GetRemoteRecordersById_Info

This function returns info for specific Remote Recorder

#### Syntax

```visualbasic
GetRemoteRecordersById_Info(tRemoteRecorderID As Text, ByRef nRespCode As Long, 
  ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sRemoteRecorder, 
  Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tRemoteRecorderID

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  - Remote Recorder Id 

Response

sRemoteRecorder -structure see  [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

tRespBody, nRespCode, Return Value- see [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tRemoteRecorderID As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sRemoteRecorder

Digital_Video_Record1.GetRemoteRecordersById_Info(tRemoteRecorderID , nHttpCode,MyResponse, tBody)
```


### SOAPapi 4.6

## Panopto SOAP API

  [https://support.panopto.com/resource/APIDocumentation/Help/html/c40c21c6-dc7a-d822-8c99-b276ee8337c2.htm](https://support.panopto.com/resource/APIDocumentation/Help/html/c40c21c6-dc7a-d822-8c99-b276ee8337c2.htm)

## GetPersonalFolderForUser

This function returns Id and Name of the User's Personal Folder

#### Syntax

```visualbasic
GetPersonalFolderForUser(tUserID As Text, bAllowCreation As Boolean, 
  ByRef UserFolder As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sIdName,
  ByRef nRespCode As Long, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tUserID

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  -Remote Recorder Id

bAllowCreation

<u>[Boolean](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Boolean)</u> - Allow Creation

UserFolder

sIdName -structure see  <u>[Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)</u>

tRespBody, nRespCode, Return Value- see <u>[Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)</u>

#### Example

```
Var nHttpCode As Long
Var tBody As Text[2000]
Var tUserID As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sIdName
Digital_Video_Record1.GetPersonalFolderForUser(tUserID, False,
  nHttpCode,MyResponse, tBody)
DebugPrint (MyResponse.Id, MyResponse.Name)
```


---

### PublicApi 4.1

## Api4_1_GetRemoteRecorderPreviewData

This function returns Url s for Audio and Video previews 

#### Syntax

```visualbasic
Api4_1_GetRemoteRecorderPreviewData(tRemoteRecorderId As Text, ByRef nRespCode As Long, ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sRecorderPreviewData, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tRemoteRecorderId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  - Remote Recorder Id

Response

sRecorderPreviewData -structure see  [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

tRespBody, nRespCode, Return Value- see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)


#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sRecorderPreviewData 
Digital_Video_Digital_Video_Record1.Api4_1_GetRemoteRecorderPreviewData("a01abcde-0abc-bda0-9c1c-c01234567890",
	nHttpCode, MyResponse, tBody)
```

## GetPrewiewPicture

This function is supplement function for function Api_4_1_GetRemoteRecorderPreviewData it returns picture binary data from Thumbnail URL obtained from Api_4_1_GetRemoteRecorderPreviewData function

#### Syntax

```visualbasic
GetPrewiewPicture(tThumbnailUrl As Text, bsPicture As AddressOf ByteString) As Boolean
```

#### Parameters

tThumbnailUrl

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u> -URL to fetch the data 

bsPicture

<u>[ByteString](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#ByteString)</u> -variable to store picture binary data 

#### Return value

<u>[Boolean](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Boolean)</u> True on success or False if an error occurs.

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sRecorderPreviewData 
Var bsPicture As ByteString[5000]

Digital_Video_Record1.Api4_1_GetRemoteRecorderPreviewData("a01abcde-0abc-bda0-9c1c-c01234567890",
	nHttpCode,MyResponse, tBody)
Digital_Video_Record1.GetPrewiewPicture(MyResponse.Devices[1].VideoPreviewUrl,bsPicture )
```

## Api4_1_GetSessionMetadata

This function ...

#### Syntax

```visualbasic
Api4_1_GetSessionMetadata(tSessionDeliveryId As Text, ByRef nRespCode As Long,
    ByRef Response As Namespace "Panopto.DVRecorder.REST_SOAP.data.1".sSessionMetadata, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tSessionDeliveryId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  - Delivery Id

Response

sSessionMetadata -structure see [Constants and Structures](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)  

tRespBody, nRespCode, Return Value- see [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var MyResponse As Namespace"Panopto.DVRecorder.REST_SOAP.data.1".sSessionMetadata 

Digital_Video_Record1.Api4_1_GetSessionMetadata("a01abcde-0abc-bda0-9c1c-c01234567890",
	nHttpCode,MyResponse, tBody)
```

## Api4_1_PauseDurationUpdate

This function updates pause length

#### Syntax

```visualbasic
Api4_1_PauseDurationUpdate(tSessionId As Text, tPauseId As Text, iDurationSeconds As Double, ByRef nRespCode As Long, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tSessionId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  - Session Id

tPauseId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  - Pause Id

iDurationSeconds

<u>[Double](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Double)</u> - pause time in seconds

tRespBody, nRespCode, Return Value- see  [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#CommonParam)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tMySessionId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var tMyPauseId As Text[36] 	:=  "001abcde-0000-0000-0000-01234567890a"

Digital_Video_Record1.Api4_1_PauseDurationUpdate(tMySessionId,tMyPauseId, 60, nHttpCode, tBody)
```

## Api4_1_PauseRecording

This function starts Pause in recording session  and returns the PauseId

#### Syntax

```visualbasic
Api4_1_PauseRecording(tSessionId As Text, ByRef nRespCode As Long, ByRef tPauseId As Text, Optional tRespBody As AddressOf Text := Nothing) As Boolean
```

#### Parameters

tSessionId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  - Session Id

tPauseId

<u>[Text](https://cue.atlassian.net/wiki/spaces/CVCHELP/pages/495058958/Data+types#Text)</u>  - Pause Id

tRespBody, nRespCode, Return Value- see [Common Parameters](https://cue.atlassian.net/wiki/spaces/CVCDD/pages/1956282369/Functions+and+Data+Structures#ConstAndStruct)

#### Example

```visualbasic
Var nHttpCode As Long
Var tBody As Text[2000]
Var tMySessionId As Text[36]:=  "a01abcde-0abc-bda0-9c1c-c01234567890"
Var tMyPauseId As Text[36] 	

Digital_Video_Record1.Api4_1_PauseRecording(tMySessionId, nHttpCode, tMyPauseId, tBody)
```


---




# > Macro (anchor)

Constants and Structures


> Macro (anchor)



```visualbasic
//-------------------------------------------------------------------------------------------
// Constants
//-------------------------------------------------------------------------------------------
Public Const 	ITEMS_PER_PAGE 		As 	Long 	:= 16  //max 32 to fit into 1Mb for FW 20.xx
Public Const 	USERS_MAX 			As 	Long 	:= 50
Public Const 	SCHEDULED_ENTRIES_MAX As Long 	:= 4
Public Const 	REMOTE_RECORDERS_MAX As Long 	:= 10
Public Const 	PREVIEW_DEVICES_MAX	As 	Long 	:= 4
Public Const 	MAX_SCHEDULED_RECORDINGS As 	Long 	:= 50


Public Const	MAX_ACCESS_TOKEN_LEN As Long 	:= 3000
Public 	Const	MAX_NAME_LEN 		As  Long 	:= 200
Public	Const	ID_FIX_LEN 			As  Long 	:= 36	//max.36 4f306664-c7c3-44c7-92ce-b307010f6160
                                                        //       123456789012345678901234567890123456  = 36
Public Const	MAX_USER_LEN 		As  Long 	:= 200
Public Const	MAX_URL_LEN 		As  Long 	:= 200
Public Const	MAX_PASSWORD_LEN 	As  Long 	:= 200
Public Const	MAX_DESCRIPTION_LEN	As  Long 	:= 200
Public Const	MAX_TEXT_LEN	 	As  Long 	:= 200
Public Const	MAX_TIME_LEN	 	As  Long	:= 50
Public Const	MAX_ERROR_ITEM_LEN	As 	Long 	:= 200

Public Const	MAX_COOKIE_LEN 		As 	Long 	:= 3000
Public Const 	MAX_HTTP_BODY_LEN 	As 	Long 	:= 50000
Public Const 	MAX_HTTP_HEADER_LEN As 	Long 	:= 5000
Public Const 	TIMEOUT_COOKIES_VALID	As Time := 01:00:00 //24:00:00
//-------------------------------------------------------------------------------------------
// Typedef
//-------------------------------------------------------------------------------------------

//-- IdName ------------------
Public Structure sIdName
	Var Id 			As Text[ID_FIX_LEN]
	Var Name		As Text[MAX_NAME_LEN]
End Structure

//-- Properties ------------------
Public Structure sProperties
	Var ServerUrl			As Text[MAX_URL_LEN]
	Var UserName 			As Text[MAX_NAME_LEN]
	Var Password 			As Text[MAX_PASSWORD_LEN]
	Var ClientId			As Text[ID_FIX_LEN]
	Var ClientSecret 		As Text[MAX_TEXT_LEN]
	Var RemoteRecorderName1	As Text[MAX_NAME_LEN]
	Var RemoteRecorderName2	As Text[MAX_NAME_LEN]
	Var RemoteRecorderName3	As Text[MAX_NAME_LEN]
	Var RemoteRecorderName4	As Text[MAX_NAME_LEN]
	Var RemoteRecorderName5	As Text[MAX_NAME_LEN]
	Var RemoteRecorderName6	As Text[MAX_NAME_LEN]
	Var RecordingFolderId	As Text[ID_FIX_LEN]
	Var DebugEnable			As Boolean
End Structure

//-- Session ------------------
Structure sUrls
	Var ViewerUrl 		As 	Text[MAX_URL_LEN]
	Var EmbedUrl 		As 	Text[MAX_URL_LEN]
	Var ShareSettingsUrl As Text[MAX_URL_LEN]
	Var DownloadUrl 	As 	Text[MAX_URL_LEN]
	Var CaptionDownloadUrl As Text[MAX_URL_LEN]
	Var EditorUrl 		As 	Text[MAX_URL_LEN]
	Var ThumbnailUrl 	As 	Text[MAX_URL_LEN]
End Structure

Structure sContext
	Var vText Alias "Text" 	As Text[MAX_TEXT_LEN]
	Var vTime Alias "Time" 	As Long
	Var ThumbnailUrl 		As Text[MAX_URL_LEN]
End Structure


//-- ListResponseOfSession -------------
//Model sFolder .... reply:Folders GetFoldrById
Structure sFolderUrls
	Var FolderUrl 		As Text[MAX_URL_LEN]	//The URL to open this folder in Panopto
	Var EmbedUrl 		As Text[MAX_URL_LEN]	//The URL to an embedded version of this folder
	Var ShareSettingsUrl As Text[MAX_URL_LEN]	//The URL to change how this folder is shared. May be blank if permission is not granted.0
End Structure

Public Structure sFolder
	Var Id 			As 	Text[ID_FIX_LEN]
	Var Name 		As 	Text[MAX_NAME_LEN]
	Var Description As 	Text[MAX_DESCRIPTION_LEN]
	Var ParentFolder As sIdName
	Var Urls 		As 	sFolderUrls
End Structure

//-- ListResponseOfFolder -------------
Public Structure sListResponseOfFolder
	Var Results[ITEMS_PER_PAGE] As sFolder
End Structure

////////////
//-- ListResponseOfSession -------------
// Model: ListResponseOfSession 
// ...reply: Users_GetMyViewedSessions()
// ...reply: Session_GetInProgressWebcasts()
// ...reply: Session_GetInProgressRecordings
// ...reply: Session_SearchByKeyword

Public Structure sListResponseOfSession
	Var Results[ITEMS_PER_PAGE] As sSession
End Structure

Public Structure sSession
	Var Id 				As Text[ID_FIX_LEN]
	Var Name 			As Text[MAX_NAME_LEN]
	Var Description 	As Text[MAX_DESCRIPTION_LEN]	
	Var StartTime 		As Text[MAX_TIME_LEN]		
	Var Duration 		As Long			
	Var MostRectViewPosition As Double
	Var CreatedBy 		As sUser		
	Var Urls 			As sUrls				
	Var Folder 			As Text[MAX_NAME_LEN]			
	Var FolderDetails 	As sIdName
	Var Context[ITEMS_PER_PAGE] As sContext
	Var PercentCompleted As Long	
End Structure

//-- ScheduledRecording -------------
// Model: ScheduledRecording  ...reply: ScheduledRecordings_GetScheduledRecordingById()
Public Structure sScheduledRecording
	Var Id 			As Text[ID_FIX_LEN]    	
	Var Name 		As Text[MAX_NAME_LEN]
	Var	RecorderScheduleEntries[SCHEDULED_ENTRIES_MAX] As sRecorderScheduleEntry
	Var StartTime 	As Text[MAX_TIME_LEN]
	Var EndTime 	As Text[MAX_TIME_LEN]
End Structure

Structure sRecorderScheduleEntry
	Var Id 			As Text[ID_FIX_LEN]    		//guid
	Var Name 		As Text[MAX_NAME_LEN]
	Var RecorderId 	As Text[ID_FIX_LEN] //guid
	Var	SuppressPrimaryCapture 	As 	Boolean
	Var	SuppressSecondaryCapture As	Boolean
	Var RecorderDescription As Text[MAX_DESCRIPTION_LEN]
End Structure

//-- ScheduledRecordingCreate -------------
// Model: ScheduledRecording  ...reply: ScheduledRecordings_GetScheduledRecordingById()

Public Structure sScheduledRecordingCreate1
	Var Name 				As 	Text[MAX_NAME_LEN]
	Var Description			As 	Text[MAX_TEXT_LEN]
	Var StartTime 			As 	Text[MAX_TIME_LEN]
	Var EndTime 			As 	Text[MAX_TIME_LEN]
	Var FolderId 			As 	Text[ID_FIX_LEN]
	Var	Recorders[1] 		As 	sScheduledRecordingRemoteRecorder
	Var	IsBroadcast 		As 	Boolean //Set To True If this recording should be broadcast live when it starts.
End Structure

Structure sScheduledRecordingRemoteRecorder
	Var RemoteRecorderId 	As Text[ID_FIX_LEN] //The id of the remote recorder To use For this recording. Only one can be specified at this Time.
	Var	SuppressPrimary 	As 	Boolean	//True If the primary stream should be suppressed from this recorder.
											//	 At least one recorder in a scheduled recording must Not suppress the primary stream.
	Var	SuppressSecondary 	As	Boolean	//True If the secondary stream should be suppressed from this recorder.
End Structure

Public Structure sScheduledRecordingUpdateTime
	Var StartTime 			As Text[MAX_TIME_LEN]
	Var EndTime 			As Text[MAX_TIME_LEN]
End Structure

//--- ListResponseOfRemoteRecorder---
Structure sListResponseOfRemoteRecorder_ResultItem
	Var Id 		As Text[ID_FIX_LEN]    		//guid
	Var Name 	As Text[MAX_NAME_LEN]
	Var State 	As Long   		//0-6 (eg 5= Dissconnected) [ Stopped, Previewing, Recording, Paused, Faulted, Disconnected, RecorderRunning 
	Var	DefaultRecordingFolder As sIdName
End Structure

Public Structure sListResponseOfRemoteRecorder
	Var Results[REMOTE_RECORDERS_MAX] As sListResponseOfRemoteRecorder_ResultItem
End Structure
            
//-- ListResponseOfUser -------------
// Model: ListResponseOfUser  ...reply: Users_Search()

Public Structure sListResponseOfUser
	Var Results[USERS_MAX] As sUser
End Structure

Structure sUser
	Var Id 			As Text[ID_FIX_LEN]
	Var Username 	As Text[MAX_NAME_LEN]
End Structure

//---------------------------------------------
//-- PublicAPI 4.1 GetSessionMetadata ---------
// SessionMetadata

Public Structure sSessionMetadata
	Var AverageRating	 		As Long
//	Var Contributors[xx] 		As sContributor
	Var Duration				As Text[MAX_TEXT_LEN]
	Var Identifier				As Text[MAX_TEXT_LEN]
	Var PublicID				As Text[ID_FIX_LEN]
	Var RatingCount	 			As Long
	Var SessionAbstract			As Text[MAX_TEXT_LEN]
//	Var SessionGroupAbstract	As Text[MAX_TEXT_LEN]
	Var SessionGroupLongName	As Text[MAX_TEXT_LEN]
	Var SessionGroupPublicID	As Text[ID_FIX_LEN]
	Var SessionGroupShortName	As Text[MAX_TEXT_LEN]
	Var SessionName				As Text[MAX_NAME_LEN]
	Var SessionPublicID			As Text[ID_FIX_LEN]
	Var SessionStartTime		As Text[MAX_TEXT_LEN]
//	Var Timestamps[xx]	As sTimestamp
End Structure


 Structure sDevice
	Var AudioPreviewUrl		As Text[MAX_URL_LEN]
	Var IsPrimaryAudio		As Boolean
	Var IsPrimaryVideo		As Boolean
	Var Name				As Text[MAX_NAME_LEN]
	Var VideoPreviewUrl		As Text[MAX_URL_LEN]
End Structure
	
	
Public Structure sRecorderPreviewData
	Var	Devices[PREVIEW_DEVICES_MAX]		As sDevice
	Var	RecorderAwakeIntervalSeconds 		As Long		//RecorderAwakeIntervalSeconds":300,
	Var	ThumbnailRefreshIntervalSeconds		As Long		//"ThumbnailRefreshIntervalSeconds":10}
End Structure

Public Structure sRemoteRecorder
	Var Id 			As 	Text[ID_FIX_LEN]
	Var Name 		As 	Text[MAX_NAME_LEN]
	Var ScheduledRecordings[MAX_SCHEDULED_RECORDINGS] As 	Text[ID_FIX_LEN]
End Structure

//-- APIError -----------------------
Structure sError
	Var ErrorCode 		As Text[MAX_ERROR_ITEM_LEN]
	Var Message 		As Text[MAX_ERROR_ITEM_LEN]
	Var Success 		As Boolean
	Var ErrorSource 	As Text[MAX_ERROR_ITEM_LEN]
End Structure

//model APIError
Public Structure sApiError
	Var Error 			As 	sError
End Structure
//-------------------------------------------------------------------------------------------

```