Replay.json   [plain text]


{
    "domain": "Replay",
    "description": "Controls web replay, and manages recording sessions and segments.",
    "types": [
        {
            "id": "SessionIdentifier", "description": "Unique replay session identifier.",
            "type": "integer"
        },
        {
            "id": "SegmentIdentifier", "description": "Unique session segment identifier.",
            "type": "integer"
        },
        {
            "id": "ReplayPosition",
            "type": "object",
            "properties": [
               { "name": "segmentOffset", "type": "integer", "description": "Offset for a segment within the currently-loaded replay session." },
               { "name": "inputOffset", "type": "integer", "description": "Offset for an event loop input within the specified session segment." }
            ]
        },
        {
            "id": "ReplayInput",
            "type": "object",
            "properties": [
                { "name": "type", "type": "string", "description": "Input type." },
                { "name": "offset", "type": "integer", "description": "Offset of this input in its respective queue."},
                { "name": "timestamp", "type": "number", "optional": true, "description": "The timestamp of this input." },
                { "name": "data", "type": "object", "description": "Per-input payload." }
            ]
        },
        {
            "id": "ReplayInputQueue",
            "type": "object",
            "properties": [
                { "name": "type", "type": "string", "description": "Queue type" },
                { "name": "inputs", "type": "array", "items": { "$ref": "ReplayInput"}, "description": "Inputs belonging to this queue." }
            ]
        },
        {
            "id": "SessionSegment", "description": "A standalone segment of a replay session that corresponds to a single main frame navigation and execution.",
            "type": "object",
            "properties": [
                { "name": "id", "$ref": "SegmentIdentifier", "description": "Unique session segment identifier." },
                { "name": "timestamp", "type": "number", "description": "Start time of the segment, in milliseconds since the epoch." },
                { "name": "queues", "type": "array", "items": { "$ref": "ReplayInputQueue"} }
            ]
        },
        {
            "id": "ReplaySession", "description": "An ordered collection of replay session segments.",
            "type": "object",
            "properties": [
                { "name": "id", "$ref": "SessionIdentifier", "description": "Unique replay session identifier." },
                { "name": "timestamp", "type": "number", "description": "Creation time of session, in milliseconds since the epoch." },
                { "name": "segments", "type": "array", "items": { "$ref": "SegmentIdentifier" }, "description": "An ordered list identifiers for the segments that comprise this replay session." }
            ]
        }
    ],
    "commands": [
        {
            "name": "startCapturing",
            "description": "Starts capture of a new replay session."
        },
        {
            "name": "stopCapturing",
            "description": "Stops capture of the currently recording replay session."
        },
        {
            "name": "replayToPosition",
            "description": "Seek execution to a specific position within the replay session.",
            "parameters": [
                { "name": "position", "$ref": "ReplayPosition" },
                { "name": "shouldFastForward", "type": "boolean" }
            ]
        },
        {
            "name": "replayToCompletion",
            "description": "Replay all session segments completely.",
            "parameters": [
                { "name": "shouldFastForward", "type": "boolean" }
            ]
        },
        {
            "name": "pausePlayback",
            "description": "Pauses playback in the current segment. Can be resumed by using a replay command."
        },
        {
            "name": "cancelPlayback",
            "description": "Cancels playback of the current segment. Further replaying will start from the beginning of the current segment."
        },
        {
            "name": "switchSession",
            "description": "Unloads the current replay session and loads the specified session",
            "parameters": [
                { "name": "sessionIdentifier", "$ref": "SessionIdentifier" }
            ]
        },
        {
            "name": "insertSessionSegment",
            "description": "Splices the specified session segment into the session at the specified index.",
            "parameters": [
                { "name": "sessionIdentifier", "$ref": "SessionIdentifier" },
                { "name": "segmentIdentifier", "$ref": "SegmentIdentifier" },
                { "name": "segmentIndex", "type": "integer" }
            ]
        },
        {
            "name": "removeSessionSegment",
            "description": "Removes the session segment at the specified position from the session.",
            "parameters": [
                { "name": "sessionIdentifier", "$ref": "SessionIdentifier" },
                { "name": "segmentIndex", "type": "integer" }
            ]
        },
        {
            "name": "getAvailableSessions",
            "description": "Returns identifiers of all available sessions.",
            "returns": [
                { "name": "ids", "type": "array", "items": { "$ref": "SessionIdentifier" } }
            ]
        },
        {
            "name": "getSerializedSession",
            "description": "Returns the specified session serialized to a JSON object.",
            "parameters": [
                { "name": "sessionIdentifier", "$ref": "SessionIdentifier" }
            ],
            "returns": [
                { "name": "session", "$ref": "ReplaySession", "optional": true, "description": "The requested serialized replay session." }
            ]
        },
        {
            "name": "getSerializedSegment",
            "description": "Returns the session segment serialized to a JSON object.",
            "parameters": [
                { "name": "id", "$ref": "SegmentIdentifier" }
            ],
            "returns": [
                { "name": "segment", "$ref": "SessionSegment",  "optional": true, "description": "The requested serialized session segment." }
            ]
        }
    ],
    "events": [
        {
            "name": "captureStarted",
            "description": "Fired when capture has started."
        },
        {
            "name": "captureStopped",
            "description": "Fired when capture has stopped."
        },
        {
            "name": "playbackHitPosition",
            "description": "A position was reached during playback of the session.",
            "parameters": [
                { "name": "position", "$ref": "ReplayPosition", "description": "The playback position that was hit." },
                { "name": "timestamp", "type": "number", "description": "A timestamp for the event." }
            ]
        },
        {
            "name": "playbackStarted",
            "description": "Fired when session playback has started."
        },
        {
            "name": "playbackPaused",
            "description": "Fired when session playback has paused, but not finished.",
            "parameters": [
                { "name": "position", "$ref": "ReplayPosition", "description": "The playback position immediately prior to where playback is paused." }
            ]
        },
        {
            "name": "playbackFinished",
            "description": "Fired when session playback has stopped."
        },
        {
            "name": "inputSuppressionChanged",
            "description": "Fired when the replay controller starts or stops suppressing user inputs.",
            "parameters": [
                { "name": "willSuppress", "type": "boolean", "description": "Whether user inputs will be suppressed during playback." }
            ]
        },
        {
            "name": "sessionCreated",
            "description": "Fired when a new replay session is created",
            "parameters": [
                { "name": "id", "$ref": "SessionIdentifier", "description": "Identifier for the created session." }
            ]
        },
        {
            "name": "sessionModified",
            "description": "Fired when a session's segments have changed.",
            "parameters": [
                { "name": "id", "$ref": "SessionIdentifier", "description": "Identifier for the session the segment was added to." }
            ]
        },
        {
            "name": "sessionRemoved",
            "description": "Fired when a replay session is removed and can no longer be loaded.",
            "parameters": [
                { "name": "id", "$ref": "SessionIdentifier", "description": "Identifier for the removed session." }
            ]
        },
        {
            "name": "sessionLoaded",
            "description": "Fired when a replay session is loaded.",
            "parameters": [
                { "name": "id", "$ref": "SessionIdentifier", "description": "Identifier for the loaded session." }
            ]
        },
        {
            "name": "segmentCreated",
            "description": "Fired when a new session segment is created.",
            "parameters": [
                { "name": "id", "$ref": "SegmentIdentifier", "description": "Identifier for the created session segment." }
            ]
        },
        {
            "name": "segmentRemoved",
            "description": "Fired when a session segment is removed and can no longer be replayed as part of a session.",
            "parameters": [
                { "name": "id", "$ref": "SegmentIdentifier", "description": "Identifier for the removed session segment." }
            ]
        },
        {
            "name": "segmentCompleted",
            "description": "Fired when a session segment is completed and can no longer have inputs added to it.",
            "parameters": [
                { "name": "id", "$ref": "SegmentIdentifier", "description": "Identifier for the completed session segment." }
            ]
        },
        {
            "name": "segmentLoaded",
            "description": "Fired when a segment is loaded.",
            "parameters": [
                { "name": "segmentIdentifier", "$ref": "SegmentIdentifier", "description": "Id for the loaded segment." }
            ]
        },
        {
            "name": "segmentUnloaded",
            "description": "Fired when a segment is unloaded."
        }
    ]
}