Class: Infrawrench::SessionRecordingsNamespace

Inherits:
Object
  • Object
show all
Defined in:
lib/infrawrench/client.rb,
sig/infrawrench/sdk.rbs

Overview

client.session_recordings

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(transport) ⇒ SessionRecordingsNamespace

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of SessionRecordingsNamespace.

Parameters:



12333
12334
12335
12336
# File 'lib/infrawrench/client.rb', line 12333

def initialize(transport)
  @transport = transport
  @settings = SessionRecordingsSettingsNamespace.new(@transport)
end

Instance Attribute Details

#settingsSessionRecordingsSettingsNamespace (readonly)

Returns client.session_recordings.settings.

Returns:



12329
12330
12331
# File 'lib/infrawrench/client.rb', line 12329

def settings
  @settings
end

Instance Method Details

#cast(recording_id:, org_id: nil, download: nil, request_options: nil) ⇒ String

Download a recording as an asciicast

The session as an asciicast v2 document: a JSON header line followed by one [time, code, data] event per line. Deliberately somebody else's format — the same bytes play in asciinema play and in the reference web player, so a recording is useful to an auditor who has never seen this product. ?download=1 returns it as an attachment. Every fetch is audit-logged, including this one: an investigator has to be able to answer who has watched a given tape.

Requires permission: session-recordings:read.

GET /api/org/orgId/session-recordings/recordingId/cast

Raises on 404: Not found

Parameters:

  • org_id (String, nil) (defaults to: nil)

    Organization id. Defaults to the org_id the client was constructed with.

  • recording_id (String)
  • download (String, nil) (defaults to: nil)

    Force an attachment disposition.

  • request_options (Hash, nil) (defaults to: nil)

    Per-call :headers, :timeout and :open_timeout.

  • recording_id: (String)
  • org_id: (String, nil) (defaults to: nil)
  • download: ("1", nil) (defaults to: nil)
  • request_options: (Hash[Symbol, untyped], nil) (defaults to: nil)

Returns:

  • (String)

    Raw response bytes.

Raises:



12362
12363
12364
12365
12366
12367
12368
12369
12370
12371
# File 'lib/infrawrench/client.rb', line 12362

def cast(recording_id:, org_id: nil, download: nil, request_options: nil)
  @transport.request(
    http_method: "GET",
    path: "/api/org/{orgId}/session-recordings/{recordingId}/cast",
    path_params: { "orgId" => org_id, "recordingId" => recording_id },
    query: { "download" => download },
    accept: :binary,
    request_options: request_options
  )
end

#delete(recording_id:, org_id: nil, request_options: nil) ⇒ Hash

Delete a recording

Removes the recording and its stored chunks. Audit-logged.

Requires permission: session-recordings:write.

DELETE /api/org/orgId/session-recordings/recordingId

Raises on 404: Not found

Parameters:

  • org_id (String, nil) (defaults to: nil)

    Organization id. Defaults to the org_id the client was constructed with.

  • recording_id (String)
  • request_options (Hash, nil) (defaults to: nil)

    Per-call :headers, :timeout and :open_timeout.

  • recording_id: (String)
  • org_id: (String, nil) (defaults to: nil)
  • request_options: (Hash[Symbol, untyped], nil) (defaults to: nil)

Returns:

  • (Hash)

    Parsed JSON, shaped as Ok — see sig/infrawrench/sdk.rbs.

Raises:



12389
12390
12391
12392
12393
12394
12395
12396
# File 'lib/infrawrench/client.rb', line 12389

def delete(recording_id:, org_id: nil, request_options: nil)
  @transport.request(
    http_method: "DELETE",
    path: "/api/org/{orgId}/session-recordings/{recordingId}",
    path_params: { "orgId" => org_id, "recordingId" => recording_id },
    request_options: request_options
  )
end

#get(recording_id:, org_id: nil, request_options: nil) ⇒ Hash

Get one recording's metadata

Requires permission: session-recordings:read.

GET /api/org/orgId/session-recordings/recordingId

Raises on 404: Not found

Parameters:

  • org_id (String, nil) (defaults to: nil)

    Organization id. Defaults to the org_id the client was constructed with.

  • recording_id (String)
  • request_options (Hash, nil) (defaults to: nil)

    Per-call :headers, :timeout and :open_timeout.

  • recording_id: (String)
  • org_id: (String, nil) (defaults to: nil)
  • request_options: (Hash[Symbol, untyped], nil) (defaults to: nil)

Returns:

  • (Hash)

    Parsed JSON, shaped as SessionRecording — see sig/infrawrench/sdk.rbs.

Raises:



12412
12413
12414
12415
12416
12417
12418
12419
# File 'lib/infrawrench/client.rb', line 12412

def get(recording_id:, org_id: nil, request_options: nil)
  @transport.request(
    http_method: "GET",
    path: "/api/org/{orgId}/session-recordings/{recordingId}",
    path_params: { "orgId" => org_id, "recordingId" => recording_id },
    request_options: request_options
  )
end

#list(org_id: nil, status: nil, user_id: nil, resource_id: nil, account_id: nil, since: nil, until_param: nil, limit: nil, request_options: nil) ⇒ Array<Hash>

List recorded SSH sessions

Recorded sessions, newest first. Only SSH opened through the cloud is recorded — those sessions are already proxied by the server, so recording tees a stream it holds rather than requiring an agent on the host. A desktop session that dials a host directly never reaches the server and cannot appear here.

Requires permission: session-recordings:read.

GET /api/org/orgId/session-recordings

Raises on 400: Bad request

Parameters:

  • org_id (String, nil) (defaults to: nil)

    Organization id. Defaults to the org_id the client was constructed with.

  • status (String, nil) (defaults to: nil)

    recording (live), complete (closed cleanly), truncated (hit the per-session capture ceiling — the tape is a genuine partial and says so), or abandoned (the server handling the session went away before it could close the row).

  • user_id (String, nil) (defaults to: nil)
  • resource_id (String, nil) (defaults to: nil)
  • account_id (String, nil) (defaults to: nil)
  • since (String, nil) (defaults to: nil)

    Inclusive lower bound on startedAt.

  • until_param (String, nil) (defaults to: nil)

    Exclusive upper bound on startedAt.

  • limit (Integer, nil) (defaults to: nil)
  • request_options (Hash, nil) (defaults to: nil)

    Per-call :headers, :timeout and :open_timeout.

  • org_id: (String, nil) (defaults to: nil)
  • status: ("recording", "complete", "truncated", "abandoned", nil) (defaults to: nil)
  • user_id: (String, nil) (defaults to: nil)
  • resource_id: (String, nil) (defaults to: nil)
  • account_id: (String, nil) (defaults to: nil)
  • since: (String, nil) (defaults to: nil)
  • until_param: (String, nil) (defaults to: nil)
  • limit: (Integer, nil) (defaults to: nil)
  • request_options: (Hash[Symbol, untyped], nil) (defaults to: nil)

Returns:

  • (Array<Hash>)

    Parsed JSON, shaped as Array<SessionRecording> — see sig/infrawrench/sdk.rbs.

Raises:



12450
12451
12452
12453
12454
12455
12456
12457
12458
12459
12460
12461
12462
12463
12464
12465
12466
12467
12468
12469
12470
12471
12472
12473
12474
12475
12476
# File 'lib/infrawrench/client.rb', line 12450

def list(
  org_id: nil,
  status: nil,
  user_id: nil,
  resource_id: nil,
  account_id: nil,
  since: nil,
  until_param: nil,
  limit: nil,
  request_options: nil
)
  @transport.request(
    http_method: "GET",
    path: "/api/org/{orgId}/session-recordings",
    path_params: { "orgId" => org_id },
    query: {
      "status" => status,
      "userId" => user_id,
      "resourceId" => resource_id,
      "accountId" => ,
      "since" => since,
      "until" => until_param,
      "limit" => limit
    },
    request_options: request_options
  )
end