Skip to content

API Endpoints Reference

Complete reference for all Subject Interface REST API endpoints with request/response examples and field definitions.

Data Types

Type Description Example
string Text value "example-value"
number Numeric value 8443
boolean True/false value true
array List of values ["value1", "value2"]
object JSON object {"key": "value"}
enum Fixed set of values "TLC" (from TLC, Broker, Monitor)
timestamp Unix epoch milliseconds 1640995200000
iso8601 ISO 8601 datetime string "2024-01-15T10:30:00Z"
uuid UUID identifier "550e8400-e29b-41d4-a716-446655440000"

Authentication

Header: X-Authorization: your-token-value

Required for: All endpoints except public documentation

Sessions

List Sessions

GET /v1/sessions
GET /v1/sessions?type=TLC
GET /v1/sessions?protocol=TCPStreaming_Multiplex

Required Roles: TLC/Broker/Monitor Admin/System

Query Parameters:

Parameter Type Required Description Valid Values
type enum No Filter by session type TLC, Broker, Monitor
protocol enum No Filter by protocol TCPStreaming_Singleplex, TCPStreaming_Multiplex

Response: Array of session objects

[
  {
    "domain": "your-domain",
    "type": "TLC",
    "token": "session-token-123",
    "protocol": "TCPStreaming_Singleplex",
    "details": {
      "securityMode": "TLSv1.2",
      "listener": {
        "host": "streaming.example.com",
        "port": 8443,
        "expiration": "2024-01-15T10:30:00Z"
      },
      "tlcIdentifier": "device01"
    }
  }
]

Response Fields:

Field Type Description Notes
domain string Domain context Matches token's domain
type enum Session type TLC, Broker, or Monitor
token string Unique session identifier System-generated
protocol enum Communication protocol TCPStreaming_Singleplex or TCPStreaming_Multiplex
details object Session configuration and limits Contains operational parameters
details.securityMode enum Encryption mode NONE or TLSv1.2
details.keepAliveTimeout iso8601 Maximum idle time before connection timeout ISO 8601 duration format. See Connection Timeout Enforcement
details.payloadRateLimit number Maximum payload messages per duration Rate limiting for message frequency. See Payload Rate Limiting
details.payloadRateLimitDuration iso8601 Time window for rate limit ISO 8601 duration format. See Payload Rate Limiting
details.payloadThroughputLimit number Maximum bytes per duration Bandwidth limiting in bytes. See Throughput Limiting
details.payloadThroughputLimitDuration iso8601 Time window for throughput limit ISO 8601 duration format. See Throughput Limiting
details.clockDiffLimit iso8601 Maximum allowed clock difference Time synchronization tolerance. See Clock Sync Enforcement
details.clockDiffLimitDuration iso8601 Clock difference measurement window ISO 8601 duration format. See Clock Sync Enforcement
details.listener object Connection details Present in responses only
details.listener.host string Streaming server hostname System-determined
details.listener.port number TCP port number Range: 1024-65535
details.listener.expiration iso8601 Session expiration time ISO 8601 with Z suffix
details.tlcIdentifier string Single TLC identifier For singleplex sessions only
details.tlcIdentifiers array Multiple TLC identifiers For multiplex sessions only

Create Session

POST /v1/sessions

Required Roles: TLC/Broker/Monitor Admin/System

Request Body:

{
  "domain": "your-domain",
  "type": "TLC\|Broker\|Monitor",
  "protocol": "TCPStreaming_Singleplex|TCPStreaming_Multiplex",
  "details": {
    "securityMode": "NONE|TLSv1.2",
    "tlcIdentifier": "device01",          // Singleplex only
    "tlcIdentifiers": ["sub00001", "sub00002"]  // Multiplex only
  }
}

Request Fields:

Field Type Required Description Validation
domain string Yes Domain context Must match token's domain
type enum Yes Session type TLC, Broker, or Monitor
protocol enum Yes Communication protocol TCPStreaming_Singleplex or TCPStreaming_Multiplex
details object Yes Session configuration Structure varies by protocol
details.securityMode enum Yes Encryption mode NONE or TLSv1.2
details.tlcIdentifier string Conditional Single TLC identifier Required for singleplex, 8 chars, lowercase alphanumeric, underscore, hyphen
details.tlcIdentifiers array Conditional Multiple TLC identifiers Required for multiplex, 1-100 items

Response: Session object with connection details (same structure as List Sessions)

{
  "domain": "dev_001",
  "type": "TLC", 
  "token": "session-token-abc123",
  "protocol": "TCPStreaming_Singleplex",
  "details": {
    "securityMode": "TLSv1.2",
    "keepAliveTimeout": "PT10S",
    "payloadRateLimit": 12,
    "payloadRateLimitDuration": "PT5S",
    "payloadThroughputLimit": 60,
    "payloadThroughputLimitDuration": "PT5S",
    "clockDiffLimit": "PT3S",
    "clockDiffLimitDuration": "PT1M",
    "listener": {
      "host": "streaming.example.com",
      "port": 8443,
      "expiration": "2024-01-15T10:30:00Z"
    },
    "tlcIdentifier": "sub00001"
  }
}

Response Fields:

Field Type Description Notes
domain string Domain context Matches request domain
type enum Session type TLC, Broker, or Monitor
token string Unique session identifier System-generated, used for streaming connection
protocol enum Communication protocol TCPStreaming_Singleplex or TCPStreaming_Multiplex
details object Session configuration and limits Contains operational parameters
details.securityMode enum Encryption mode NONE or TLSv1.2
details.keepAliveTimeout iso8601 Maximum idle time before connection timeout ISO 8601 duration format. See Connection Timeout Enforcement
details.payloadRateLimit number Maximum payload messages per duration Rate limiting for message frequency. See Payload Rate Limiting
details.payloadRateLimitDuration iso8601 Time window for rate limit ISO 8601 duration format. See Payload Rate Limiting
details.payloadThroughputLimit number Maximum bytes per duration Bandwidth limiting in bytes. See Throughput Limiting
details.payloadThroughputLimitDuration iso8601 Time window for throughput limit ISO 8601 duration format. See Throughput Limiting
details.clockDiffLimit iso8601 Maximum allowed clock difference Time synchronization tolerance. See Clock Sync Enforcement
details.clockDiffLimitDuration iso8601 Clock difference measurement window ISO 8601 duration format. See Clock Sync Enforcement
details.listener object Connection details Streaming endpoint information
details.listener.host string Streaming server hostname System-determined endpoint
details.listener.port number TCP port number Range: 1024-65535
details.listener.expiration iso8601 Session expiration time ISO 8601 with Z suffix
details.tlcIdentifier string Single TLC identifier For singleplex sessions only
details.tlcIdentifiers array Multiple TLC identifiers For multiplex sessions only

Get Session

GET /v1/sessions/{token}

Required Roles: TLC/Broker/Monitor Admin/System

Path Parameters:

Parameter Type Required Description
token string Yes Session token

Response: Single session object (same structure as List Sessions)

Update Session

PUT /v1/sessions/{token}

Required Roles: TLC/Broker/Monitor Admin/System

Note: Multiplex sessions only

Request Body:

{
  "securityMode": "TLSv1.2",  // Must match existing
  "tlcIdentifiers": ["sub00001", "sub00002", "sub00003"]
}

Request Fields:

Field Type Required Description Validation
securityMode enum Yes Encryption mode Must match existing session
tlcIdentifiers array Yes Updated TLC list 1-100 valid TLC identifiers

Delete Session

DELETE /v1/sessions/{token}

Required Roles: TLC/Broker/Monitor Admin

Response: 204 No Content

Session Logs

List Session Logs

GET /v1/sessionlogs?from=2024-01-15T00:00:00Z&until=2024-01-15T23:59:59Z

Required Roles: TLC/Broker Admin/Analyst, Monitor Admin/System

Query Parameters:

Parameter Type Required Description Format
from iso8601 Yes Start time ISO 8601 with Z suffix
until iso8601 Yes End time ISO 8601 with Z suffix

Response: Array of session log objects

[
  {
    "token": "session-token-123",
    "domain": "your-domain",
    "account": "your-account",
    "type": "TLC",
    "protocol": "TCPStreaming_Singleplex",
    "details": "{\"securityMode\":\"TLSv1.2\",\"tlcIdentifier\":\"device01\"}",
    "created": 1640995200000,
    "connected": 1640995205000,
    "ended": 1640998800000,
    "endReason": "CLIENT_DISCONNECT",
    "remoteAddress": "192.168.1.100"
  }
]

Response Fields:

Field Type Required Description Notes
token string Yes Session token Unique identifier
domain string Yes Domain context Domain name
account string Yes Account identifier Account name
type enum Yes Session type TLC, Broker, or Monitor
protocol enum Yes Protocol used TCPStreaming_Singleplex or TCPStreaming_Multiplex
details string Yes JSON-encoded session details Serialized configuration
created timestamp Yes Session creation time Unix epoch milliseconds
connected timestamp No First connection time Unix epoch milliseconds, null if never connected
ended timestamp No Session end time Unix epoch milliseconds, null if still active
endReason string No Termination reason See End Reasons below
remoteAddress string No Client IP address IPv4/IPv6 address

End Reasons:

Reason Description Cause
CLIENT_DISCONNECT Client closed connection Normal client-initiated termination
SESSION_EXPIRED Session reached expiration Time-based expiration
ADMIN_TERMINATION Admin deleted session Manual termination via DELETE endpoint
TLC_DELETED Referenced TLC was deleted TLC resource removal
TOKEN_REVOKED Session token was revoked Token management action
CONNECTION_ERROR Network/TCP error Technical connectivity issue
PROTOCOL_ERROR Streaming protocol violation Invalid client behavior

Get Session Log

GET /v1/sessionlogs/{token}

Required Roles: TLC/Broker Admin/Analyst, Monitor Admin/System

Response: Single session log object (same structure as List Session Logs)

TLCs (Subjects)

List TLCs

GET /v1/tlcs

Required Roles: TLC Admin/Analyst, Broker Admin/System/Analyst, Monitor Admin/System

Response: Array of TLC objects

[
  {
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "identifier": "device01",
    "domain": "your-domain", 
    "account": "your-account",
    "type": "TCPStreaming"
  }
]

Response Fields:

Field Type Description Notes
uuid uuid Unique TLC identifier System-generated UUID
identifier string TLC identifier 8 chars, pattern: ^[a-z0-9_-]{8}$
domain string Domain context Inherited from token
account string Account context Inherited from token
type enum TLC type Currently only TCPStreaming

Create TLC

POST /v1/tlcs

Required Roles: TLC Admin

Request Body:

{
  "identifier": "device01"  // 8 chars, lowercase alphanumeric, underscore, hyphen
}

Request Fields:

Field Type Required Description Validation
identifier string Yes TLC identifier Exactly 8 chars, pattern: ^[a-z0-9_-]{8}$, unique within domain

TLC Identifier Examples:

  • Valid: sub00001, device01, traffic1, sensor99, ctrl0001, zone12ab, dev_0001, test-001, prod_v01
  • Invalid: Device01 (uppercase), device1 (7 chars), device001 (9 chars), dev@001 (invalid char)

Response: TLC object with generated UUID (same structure as List TLCs)

Get TLC

GET /v1/tlcs/{uuid}

Required Roles: TLC Admin/Analyst, Broker Admin/System/Analyst, Monitor Admin/System

Response: Single TLC object (same structure as List TLCs)

Delete TLC

DELETE /v1/tlcs/{uuid}

Required Roles: TLC Admin

Response: 204 No Content

Note: Terminates any active sessions using this TLC

Authorizations

List Authorizations

GET /v1/authorizations

Required Roles: TLC/Broker/Monitor Admin

Response: Array of authorization objects

[
  {
    "uuid": "660f9500-f39c-52e5-b827-556766551111",
    "domain": "your-domain",
    "account": "your-account",
    "role": "TLC_SYSTEM",
    "tlcIdentifiers": ["device01", "device02"]
  }
]

Response Fields:

Field Type Description Notes
uuid uuid Unique authorization ID System-generated UUID
domain string Domain context Inherited from token
account string Account context Inherited from token
role enum Operational role See Role Types below
tlcIdentifiers array TLC scope restriction Optional, for TLC roles only

Role Types:

Role Category Level Description
TLC_ADMIN TLC Administrative TLC management and configuration
TLC_SYSTEM TLC Operational Data generation and streaming
TLC_ANALYST TLC Analytical Monitoring and analysis
BROKER_ADMIN BROKER Administrative Broker service management
BROKER_SYSTEM BROKER Operational Data aggregation and distribution
BROKER_ANALYST BROKER Analytical Broker performance analysis
MONITOR_ADMIN MONITOR Administrative Monitoring service management
MONITOR_SYSTEM MONITOR Operational Read-only data consumption

TLC Scope Rules:

Role Category Scope Behavior Notes
TLC Roles Optional TLC restriction Empty array = domain-wide access
BROKER Roles Always domain-wide tlcIdentifiers ignored
MONITOR Roles Always domain-wide tlcIdentifiers ignored

Create Authorization

POST /v1/authorizations

Required Roles: TLC/Broker/Monitor Admin

Request Body:

{
  "role": "TLC_ADMIN\|TLC_SYSTEM\|TLC_ANALYST\|BROKER_ADMIN\|BROKER_SYSTEM\|BROKER_ANALYST\|MONITOR_ADMIN\|MONITOR_SYSTEM",
  "tlcIdentifiers": ["device01", "device02"]  // Optional, TLC roles only
}

Request Fields:

Field Type Required Description Validation
role enum Yes Operational role Must be valid role from list above
tlcIdentifiers array No TLC scope restriction Optional for TLC roles, ignored for others

Response: Authorization object with generated UUID (same structure as List Authorizations)

Get Authorization

GET /v1/authorizations/{uuid}

Required Roles: TLC/Broker/Monitor Admin

Response: Single authorization object (same structure as List Authorizations)

Update Authorization

PUT /v1/authorizations/{uuid}

Required Roles: TLC/Broker/Monitor Admin

Request Body:

{
  "role": "TLC_ANALYST",
  "tlcIdentifiers": ["device01"]
}

Request Fields: Same as Create Authorization

Delete Authorization

DELETE /v1/authorizations/{uuid}

Required Roles: TLC/Broker/Monitor Admin

Response: 204 No Content

Note: Automatically revokes all associated tokens

Authorization Tokens

List Tokens

GET /v1/authorizationtokens
GET /v1/authorizationtokens?authorization={uuid}

Required Roles: TLC/Broker/Monitor Admin

Query Parameters:

Parameter Type Required Description
authorization uuid No Filter by authorization UUID

Response: Array of token objects

[
  {
    "uuid": "770fa600-04ad-63f6-c938-667877662222",
    "token": "dtNB_vhvJ0wgTGf1N0DxN38_AmTL_4yiPRZdqZSuK3k",
    "authorization": "660f9500-f39c-52e5-b827-556766551111"
  }
]

Response Fields:

Field Type Description Notes
uuid uuid Unique token ID System-generated UUID
token string Token value Base64url-encoded, cryptographically secure
authorization uuid Associated authorization Must be valid authorization UUID

Token Format:

  • Base64url-encoded strings
  • Cryptographically random
  • URL-safe characters only
  • No expiration mechanism
  • Case-sensitive
  • Example: dtNB_vhvJ0wgTGf1N0DxN38_AmTL_4yiPRZdqZSuK3k

Create Token

POST /v1/authorizationtokens

Required Roles: TLC/Broker/Monitor Admin

Request Body:

{
  "authorization": "660f9500-f39c-52e5-b827-556766551111"
}

Request Fields:

Field Type Required Description Validation
authorization uuid Yes Associated authorization Must be valid authorization UUID within domain

Response: Token object with generated token value (same structure as List Tokens)

Get Token

GET /v1/authorizationtokens/{uuid}

Required Roles: TLC/Broker/Monitor Admin

Response: Single token object (same structure as List Tokens)

Update Token

PUT /v1/authorizationtokens/{uuid}

Required Roles: TLC/Broker/Monitor Admin

Request Body:

{
  "authorization": "new-authorization-uuid"
}

Request Fields:

Field Type Required Description Notes
authorization uuid Yes New authorization UUID Changes token's permissions and scope

Delete Token

DELETE /v1/authorizationtokens/{uuid}

Required Roles: TLC/Broker/Monitor Admin

Response: 204 No Content

Note: Immediately invalidates token for API access