SDA GraphQL IDEaaS API Reference

🚀 Welcome to the SDA GraphQL IDEaaS API

The SDA GraphQL IDEaaS API Reference contains the Queries, Mutations and Types you can use to interact with the SDA IDEaaS API to manage IDEaaS sessions.

⚠️ This website only contains the Schema reference. For examples and more information, please visit the SDA GraphQL API Examples repository.

API Endpoints
# IDEaaS GraphQL API:
https://api.sdaconsole.io/ideaas/v1/graphql
Headers
# The token you received from the SDA Console or the API
Authorization: Bearer <YOUR_TOKEN_HERE>

Queries

readAllSessionRecordings

Response

Returns [SessionRecordingType!]!

Example

Query
query ReadAllSessionRecordings {
  readAllSessionRecordings {
    sessionRecordingId
    sessionId
    sessionRecordingFile {
      fileName
      fileSize
      fileExtension
      fileKey
      fileDownloadUrl
      fileUploadUrl
    }
    status
    duration
    createdAtTimestampMs
    updatedAtTimestampMs
    creationUserId
    plcVendor
    ideConfigId
    failureReason
    thumbnailKey
    thumbnailUrl
    playbackUrl
  }
}
Response
{
  "data": {
    "readAllSessionRecordings": [
      {
        "sessionRecordingId": "xyz789",
        "sessionId": "xyz789",
        "sessionRecordingFile": SessionRecordingFileType,
        "status": "PENDING",
        "duration": 123,
        "createdAtTimestampMs": {},
        "updatedAtTimestampMs": {},
        "creationUserId": "abc123",
        "plcVendor": "abc123",
        "ideConfigId": "xyz789",
        "failureReason": "abc123",
        "thumbnailKey": "xyz789",
        "thumbnailUrl": "abc123",
        "playbackUrl": "abc123"
      }
    ]
  }
}

readAllSessions

Response

Returns a PaginatedSessionResponseType!

Arguments
Name Description
pagination - PaginationInputType!
statuses - [SessionStatus!] Default = null

Example

Query
query ReadAllSessions(
  $pagination: PaginationInputType!,
  $statuses: [SessionStatus!]
) {
  readAllSessions(
    pagination: $pagination,
    statuses: $statuses
  ) {
    items {
      objectVersion
      creationUserId
      updateUserId
      deleteUserId
      creationTimestamp
      updateTimestamp
      sessionId
      reservationId
      meteringReservationId
      instanceId
      status
      projectId
      versionId
      ownerId
      tenantId
      sessionOwner {
        ...SessionOwnerTypeFragment
      }
      sessionType
      sessionVisibility
      sessionStartTimestamp
      sessionEndTimestamp
      sessionStartTimestampMs
      sessionEndTimestampMs
      sessionDurationMs
      sessionMetadata
      streamingUrl
      supportedIdes
      language
      idleTime
      websocketChannel
    }
    pages
    itemCount
  }
}
Variables
{"pagination": PaginationInputType, "statuses": ["ul"]}
Response
{
  "data": {
    "readAllSessions": {
      "items": [SessionResponseType],
      "pages": 987,
      "itemCount": 987
    }
  }
}

readAllSessionsByTenantId

Response

Returns a PaginatedSessionResponseType!

Arguments
Name Description
tenantId - String!
pagination - PaginationInputType!
statuses - [SessionStatus!] Default = null

Example

Query
query ReadAllSessionsByTenantId(
  $tenantId: String!,
  $pagination: PaginationInputType!,
  $statuses: [SessionStatus!]
) {
  readAllSessionsByTenantId(
    tenantId: $tenantId,
    pagination: $pagination,
    statuses: $statuses
  ) {
    items {
      objectVersion
      creationUserId
      updateUserId
      deleteUserId
      creationTimestamp
      updateTimestamp
      sessionId
      reservationId
      meteringReservationId
      instanceId
      status
      projectId
      versionId
      ownerId
      tenantId
      sessionOwner {
        ...SessionOwnerTypeFragment
      }
      sessionType
      sessionVisibility
      sessionStartTimestamp
      sessionEndTimestamp
      sessionStartTimestampMs
      sessionEndTimestampMs
      sessionDurationMs
      sessionMetadata
      streamingUrl
      supportedIdes
      language
      idleTime
      websocketChannel
    }
    pages
    itemCount
  }
}
Variables
{
  "tenantId": "abc123",
  "pagination": PaginationInputType,
  "statuses": ["ul"]
}
Response
{
  "data": {
    "readAllSessionsByTenantId": {
      "items": [SessionResponseType],
      "pages": 987,
      "itemCount": 123
    }
  }
}

readHubConfig

Response

Returns a HubConfigType!

Example

Query
query ReadHubConfig {
  readHubConfig {
    hubConfigId
    recordingEnabled
    retentionDays
  }
}
Response
{
  "data": {
    "readHubConfig": {
      "hubConfigId": "xyz789",
      "recordingEnabled": false,
      "retentionDays": 987
    }
  }
}

readSession

Response

Returns a SessionResponseType!

Arguments
Name Description
sessionId - String!

Example

Query
query ReadSession($sessionId: String!) {
  readSession(sessionId: $sessionId) {
    objectVersion
    creationUserId
    updateUserId
    deleteUserId
    creationTimestamp
    updateTimestamp
    sessionId
    reservationId
    meteringReservationId
    instanceId
    status
    projectId
    versionId
    ownerId
    tenantId
    sessionOwner {
      userId
      userName
      userEmail {
        ...EmailTypeFragment
      }
      tenantId
      tenantName
    }
    sessionType
    sessionVisibility
    sessionStartTimestamp
    sessionEndTimestamp
    sessionStartTimestampMs
    sessionEndTimestampMs
    sessionDurationMs
    sessionMetadata
    streamingUrl
    supportedIdes
    language
    idleTime
    websocketChannel
  }
}
Variables
{"sessionId": "abc123"}
Response
{
  "data": {
    "readSession": {
      "objectVersion": 123,
      "creationUserId": "abc123",
      "updateUserId": "xyz789",
      "deleteUserId": "xyz789",
      "creationTimestamp": "2007-12-03T10:15:30Z",
      "updateTimestamp": "2007-12-03T10:15:30Z",
      "sessionId": "xyz789",
      "reservationId": "xyz789",
      "meteringReservationId": "abc123",
      "instanceId": "xyz789",
      "status": "PENDING",
      "projectId": "abc123",
      "versionId": "abc123",
      "ownerId": "abc123",
      "tenantId": "abc123",
      "sessionOwner": SessionOwnerType,
      "sessionType": "DEFAULT",
      "sessionVisibility": "DEFAULT",
      "sessionStartTimestamp": "abc123",
      "sessionEndTimestamp": "xyz789",
      "sessionStartTimestampMs": {},
      "sessionEndTimestampMs": {},
      "sessionDurationMs": 123,
      "sessionMetadata": {},
      "streamingUrl": "xyz789",
      "supportedIdes": ["xyz789"],
      "language": "xyz789",
      "idleTime": 123,
      "websocketChannel": "xyz789"
    }
  }
}

readSessionRecording

Response

Returns a SessionRecordingType!

Arguments
Name Description
recordingId - String!

Example

Query
query ReadSessionRecording($recordingId: String!) {
  readSessionRecording(recordingId: $recordingId) {
    sessionRecordingId
    sessionId
    sessionRecordingFile {
      fileName
      fileSize
      fileExtension
      fileKey
      fileDownloadUrl
      fileUploadUrl
    }
    status
    duration
    createdAtTimestampMs
    updatedAtTimestampMs
    creationUserId
    plcVendor
    ideConfigId
    failureReason
    thumbnailKey
    thumbnailUrl
    playbackUrl
  }
}
Variables
{"recordingId": "abc123"}
Response
{
  "data": {
    "readSessionRecording": {
      "sessionRecordingId": "abc123",
      "sessionId": "xyz789",
      "sessionRecordingFile": SessionRecordingFileType,
      "status": "PENDING",
      "duration": 123,
      "createdAtTimestampMs": {},
      "updatedAtTimestampMs": {},
      "creationUserId": "abc123",
      "plcVendor": "abc123",
      "ideConfigId": "abc123",
      "failureReason": "abc123",
      "thumbnailKey": "abc123",
      "thumbnailUrl": "xyz789",
      "playbackUrl": "abc123"
    }
  }
}

readSessionRecordingsBySession

Response

Returns [SessionRecordingType!]!

Arguments
Name Description
sessionId - String!
statuses - [RecordingStatus!] Default = null

Example

Query
query ReadSessionRecordingsBySession(
  $sessionId: String!,
  $statuses: [RecordingStatus!]
) {
  readSessionRecordingsBySession(
    sessionId: $sessionId,
    statuses: $statuses
  ) {
    sessionRecordingId
    sessionId
    sessionRecordingFile {
      fileName
      fileSize
      fileExtension
      fileKey
      fileDownloadUrl
      fileUploadUrl
    }
    status
    duration
    createdAtTimestampMs
    updatedAtTimestampMs
    creationUserId
    plcVendor
    ideConfigId
    failureReason
    thumbnailKey
    thumbnailUrl
    playbackUrl
  }
}
Variables
{"sessionId": "xyz789", "statuses": ["ul"]}
Response
{
  "data": {
    "readSessionRecordingsBySession": [
      {
        "sessionRecordingId": "xyz789",
        "sessionId": "abc123",
        "sessionRecordingFile": SessionRecordingFileType,
        "status": "PENDING",
        "duration": 123,
        "createdAtTimestampMs": {},
        "updatedAtTimestampMs": {},
        "creationUserId": "abc123",
        "plcVendor": "xyz789",
        "ideConfigId": "abc123",
        "failureReason": "xyz789",
        "thumbnailKey": "xyz789",
        "thumbnailUrl": "xyz789",
        "playbackUrl": "xyz789"
      }
    ]
  }
}

Mutations

getRecordingPlaybackUrl

Response

Returns a PlaybackUrlResponseType!

Arguments
Name Description
recordingId - String!

Example

Query
mutation GetRecordingPlaybackUrl($recordingId: String!) {
  getRecordingPlaybackUrl(recordingId: $recordingId) {
    recordingId
    playbackUrl
    thumbnailUrl
  }
}
Variables
{"recordingId": "xyz789"}
Response
{
  "data": {
    "getRecordingPlaybackUrl": {
      "recordingId": "xyz789",
      "playbackUrl": "abc123",
      "thumbnailUrl": "abc123"
    }
  }
}

startSession

Response

Returns a StartSessionResponseType!

Arguments
Name Description
input - StartSessionInput!

Example

Query
mutation StartSession($input: StartSessionInput!) {
  startSession(input: $input) {
    streamingUrl
    sessionId
    websocketChannel
  }
}
Variables
{"input": StartSessionInput}
Response
{
  "data": {
    "startSession": {
      "streamingUrl": "xyz789",
      "sessionId": "abc123",
      "websocketChannel": "abc123"
    }
  }
}

updateHubConfig

Response

Returns a HubConfigType!

Arguments
Name Description
input - UpdateHubConfigInput!

Example

Query
mutation UpdateHubConfig($input: UpdateHubConfigInput!) {
  updateHubConfig(input: $input) {
    hubConfigId
    recordingEnabled
    retentionDays
  }
}
Variables
{"input": UpdateHubConfigInput}
Response
{
  "data": {
    "updateHubConfig": {
      "hubConfigId": "xyz789",
      "recordingEnabled": false,
      "retentionDays": 123
    }
  }
}

Types

Boolean

Description

The Boolean scalar type represents true or false.

DateTime

Description

Date with time (isoformat)

Example
"2007-12-03T10:15:30Z"

EmailType

Fields
Field Name Description
value - String!
Example
{"value": "abc123"}

HubConfigType

Fields
Field Name Description
hubConfigId - String! Fixed singleton identifier — always 'default' for a given tenant.
recordingEnabled - Boolean!
retentionDays - Int!
Example
{
  "hubConfigId": "abc123",
  "recordingEnabled": true,
  "retentionDays": 123
}

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
987

JSON

Description

The JSON scalar type represents JSON values as specified by ECMA-404.

Example
{}

Long

Description

64-bit signed integer.

Example
{}

PaginatedSessionResponseType

Fields
Field Name Description
items - [SessionResponseType!]!
pages - Int!
itemCount - Int!
Example
{
  "items": [SessionResponseType],
  "pages": 987,
  "itemCount": 123
}

PaginationInputType

Fields
Input Field Description
page - Int!
pageSize - Int!
Example
{"page": 123, "pageSize": 987}

PlaybackUrlResponseType

Fields
Field Name Description
recordingId - String!
playbackUrl - String!
thumbnailUrl - String
Example
{
  "recordingId": "xyz789",
  "playbackUrl": "xyz789",
  "thumbnailUrl": "abc123"
}

RecordingStatus

Values
Enum Value Description

PENDING

UPLOADING

READY

FAILED

EXPIRED

Example
"PENDING"

SessionOwnerType

Fields
Field Name Description
userId - String!
userName - String!
userEmail - EmailType!
tenantId - String!
tenantName - String
Example
{
  "userId": "xyz789",
  "userName": "abc123",
  "userEmail": EmailType,
  "tenantId": "abc123",
  "tenantName": "xyz789"
}

SessionRecordingFileType

Fields
Field Name Description
fileName - String!
fileSize - Int!
fileExtension - String!
fileKey - String!
fileDownloadUrl - String!
fileUploadUrl - String!
Example
{
  "fileName": "abc123",
  "fileSize": 123,
  "fileExtension": "abc123",
  "fileKey": "xyz789",
  "fileDownloadUrl": "abc123",
  "fileUploadUrl": "abc123"
}

SessionRecordingType

Fields
Field Name Description
sessionRecordingId - String!
sessionId - String!
sessionRecordingFile - SessionRecordingFileType
status - RecordingStatus!
duration - Int
createdAtTimestampMs - Long
updatedAtTimestampMs - Long
creationUserId - String
plcVendor - String
ideConfigId - String
failureReason - String
thumbnailKey - String
thumbnailUrl - String
playbackUrl - String
Example
{
  "sessionRecordingId": "xyz789",
  "sessionId": "xyz789",
  "sessionRecordingFile": SessionRecordingFileType,
  "status": "PENDING",
  "duration": 987,
  "createdAtTimestampMs": {},
  "updatedAtTimestampMs": {},
  "creationUserId": "abc123",
  "plcVendor": "abc123",
  "ideConfigId": "xyz789",
  "failureReason": "abc123",
  "thumbnailKey": "abc123",
  "thumbnailUrl": "abc123",
  "playbackUrl": "abc123"
}

SessionResponseType

Fields
Field Name Description
objectVersion - Int Version number of the object, used for optimistic locking and change tracking
creationUserId - String Unique identifier of the user who created this object
updateUserId - String Unique identifier of the user who last updated this object
deleteUserId - String Unique identifier of the user who deleted this object
creationTimestamp - DateTime Date and time when this object was first created (ISO 8601 format)
updateTimestamp - DateTime Date and time when this object was last modified (ISO 8601 format)
sessionId - String!
reservationId - String
meteringReservationId - String
instanceId - String!
status - SessionStatus!
projectId - String
versionId - String
ownerId - String
tenantId - String
sessionOwner - SessionOwnerType
sessionType - SessionType!
sessionVisibility - SessionVisibility!
sessionStartTimestamp - String
sessionEndTimestamp - String
sessionStartTimestampMs - Long Deprecated: use session_start_timestamp
sessionEndTimestampMs - Long Deprecated: use session_end_timestamp
sessionDurationMs - Int
sessionMetadata - JSON
streamingUrl - String
supportedIdes - [String!]
language - String IDE language code, use the standard IETF language tag format.
idleTime - Int! Idle time in seconds before timeout.
websocketChannel - String
Example
{
  "objectVersion": 123,
  "creationUserId": "abc123",
  "updateUserId": "abc123",
  "deleteUserId": "abc123",
  "creationTimestamp": "2007-12-03T10:15:30Z",
  "updateTimestamp": "2007-12-03T10:15:30Z",
  "sessionId": "abc123",
  "reservationId": "xyz789",
  "meteringReservationId": "abc123",
  "instanceId": "xyz789",
  "status": "PENDING",
  "projectId": "abc123",
  "versionId": "abc123",
  "ownerId": "abc123",
  "tenantId": "xyz789",
  "sessionOwner": SessionOwnerType,
  "sessionType": "DEFAULT",
  "sessionVisibility": "DEFAULT",
  "sessionStartTimestamp": "xyz789",
  "sessionEndTimestamp": "abc123",
  "sessionStartTimestampMs": {},
  "sessionEndTimestampMs": {},
  "sessionDurationMs": 123,
  "sessionMetadata": {},
  "streamingUrl": "xyz789",
  "supportedIdes": ["xyz789"],
  "language": "xyz789",
  "idleTime": 987,
  "websocketChannel": "abc123"
}

SessionStatus

Values
Enum Value Description

PENDING

READY

ACTIVE

INACTIVE

FAILED

ENDED

WARM_POOL

Example
"PENDING"

SessionType

Values
Enum Value Description

DEFAULT

CUSTOM

Example
"DEFAULT"

SessionVisibility

Values
Enum Value Description

DEFAULT

PUBLIC

PRIVATE

Example
"DEFAULT"

StartSessionInput

Fields
Input Field Description
sessionId - String
projectId - String!
versionId - String!
language - String IDE language code, use the standard IETF language tag format. Default = "en-US"
Example
{
  "sessionId": "xyz789",
  "projectId": "abc123",
  "versionId": "abc123",
  "language": "abc123"
}

StartSessionResponseType

Fields
Field Name Description
streamingUrl - String!
sessionId - String!
websocketChannel - String!
Example
{
  "streamingUrl": "abc123",
  "sessionId": "xyz789",
  "websocketChannel": "abc123"
}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"abc123"

UpdateHubConfigInput

Fields
Input Field Description
recordingEnabled - Boolean
retentionDays - Int
Example
{"recordingEnabled": true, "retentionDays": 987}