Record Replay Protocol

Methods

Internal.addRecordingData

Add data to a recording. The next message sent after this must be a binary message with the data described by this message. A response to this command indicates that the data has been successfully received by the server, but it could still be lost due to a server failure. Use Internal.finishRecording if you want to ensure that all data has been successfully stored.

parameters
recordingId
Recording.RecordingId

ID of the recording data is being added to. This recording must have been produced by a createRecording command previously sent on this connection.

offset
integer

Byte offset into the recording's blob of the data being sent.

length
integer

Byte length of the data being sent.

Internal.beginRecordingMultipartUpload

Upload a recording using multipart upload

parameters
buildId
Recording.BuildId

Build Id of the software which produced the recording.

recordingSize
number

For integrity purposes, it's useful to know how much data will be in the finished recording.

recordingId
Recording.RecordingId

Identifier for the recording. Must be a version 4 UUID. If not specified, a new ID will be created.

chunkSize
integer

The chunk size to use for the multipart upload. This is the maximum size of each part, except for the last part which may be smaller.

Return Object
recordingId
Recording.RecordingId

Identifier for the recording. Matches the input recordingId if it was specified.

uploadId
string

An identifier for the multipart upload.

chunkSize
integer

Chunk size for a individual part.

partLinks
array[ string ]

An array of part links to upload the recording data to.

Internal.beginRecordingResourceUpload

Lock a given recording so that sessions will not be created until the lock has been removed.

parameters
recordingId
Recording.RecordingId

ID of the recording.

Return Object
key
string

An identifier for the lock, in order to unlock.

Internal.beginRecordingUpload

Upload a recording

parameters
buildId
Recording.BuildId

Build Id of the software which produced the recording.

recordingSize
number

For integrity purposes, it's useful to know how much data will be in the finished recording.

recordingId
Recording.RecordingId

Identifier for the recording. Must be a version 4 UUID. If not specified, a new ID will be created.

Return Object
recordingId
Recording.RecordingId

Identifier for the recording. Matches the input recordingId if it was specified.

uploadLink
string

A URL to upload the recording data to.

Internal.createRecording

Create a new recording.

parameters
buildId
Recording.BuildId

Build Id of the software which produced the recording.

recordingId
Recording.RecordingId

Identifier for the recording. Must be a version 4 UUID. If not specified, a new ID will be created.

requireFinish
boolean

The backend will accept all recording data until it gets an Internal.finishRecording command or the connection closes. Partial recordings can be useful for debugging, but if data integrity is important, this option can be used to avoid ending up with a partially-created recording. With this flag enabled, a connection loss during upload will invalidate the recording rather than using the partially-complete data.

Return Object
recordingId
Recording.RecordingId

Identifier for the recording. Matches the input recordingId if it was specified.

Internal.echo

For testing network issues.

parameters
str
string
count
integer
Return Object
str
string

Internal.endRecordingMultipartUpload

Same as endRecordingUpload, but for multipart uploads to indicate that all parts have been uploaded. If this is not sent, the recording will be considered incomplete.

parameters
recordingId
Recording.RecordingId

ID of the recording which is finished uploading.

uploadId
string

The uploadId returned from beginRecordingMultipartUpload

partIds
array[ string ]

Array of part identifiers returned after uploading each part

Internal.endRecordingResourceUpload

Unlock a lock so that sessions may be created.

parameters
key
string

ID of the recording.

Internal.endRecordingUpload

Indicate that all data for the given recording has been sent to the upload link and the recording can be marked ready and complete. If this is not sent, the recording will be considered incomplete.

parameters
recordingId
Recording.RecordingId

ID of the recording which is finished uploading.

Internal.finishRecording

Indicate that all data for the given recording has been sent and the recording can be marked ready and complete. If this is not sent, the recording will be finished as a sideeffect of the connection closing, but if backend issues were to fail to save all of the data, there will be no way to know.

parameters
recordingId
Recording.RecordingId

ID of the recording being finished.

Internal.reportCrash

Report information about a crash while recording.

parameters
data
object

Internal.setRecordingMetadata

Adds metadata that is associated with the entire recording in question, as identified by the id field in the recordingData field. This includes things like the URL being recorded as well as the token that is associated with the user who started this recording.

parameters
recordingData
RecordingData
metadata
object

Types

Internal.OperationsData

Operations that could be considered security sensitive and is currently targeted at times when the recording accesses existing information from the user's profile like cookies and local storage.

Type: object

properties
scriptDomains
array[ string ]
cookies
array[ string ]
storage
array[ string ]

Internal.RecordingData

Metadata that can be associated with a recording.

Type: object

properties
id
Recording.RecordingId
url
string
title
string
duration
integer
lastScreenData
string
lastScreenMimeType
string
operations
OperationsData