Presnly logoPresnly

Protocol Specification

PPP v1.0

The Presnly Presentation Protocol uses JSON-RPC 2.0 over WebSocket (or WebView bridge). Presentations declare capabilities during initialization. Controllers adapt to what each presentation supports.

Message Format

All messages follow the JSON-RPC 2.0 specification. Three message types:

JSON-RPC 2.0 Message Typesjsonc
// Request (requires response)
{ "jsonrpc": "2.0", "id": 1, "method": "navigation/goto", "params": { "slide": 5 } }

// Response
{ "jsonrpc": "2.0", "id": 1, "result": { "slide": 5, "total": 20 } }

// Notification (fire-and-forget, no id)
{ "jsonrpc": "2.0", "method": "state/changed", "params": { "slide": 5, "total": 20 } }

Capability Groups

During initialization, the presentation declares which capability groups it supports. Controllers should only use methods from supported groups.

CoreJump NavigationSection NavigationLifecycleDisplay ControlSpeaker NotesThumbnailsMetadataLaser PointerAnnotationsTimer
coreREQUIRED

Mandatory protocol handshake and basic navigation. Every PPP implementation must support these methods.

navigation.jump

Navigate directly to a specific slide by number.

navigation.sections

Navigate by named sections/topics instead of slide numbers.

lifecycle

Start, stop, pause, and resume the presentation.

display

Screen blanking (blackout/whiteout) and overview mode.

content.notes

Retrieve speaker notes for any slide.

content.thumbnails

Retrieve slide thumbnail images.

content.metadata

Retrieve presentation metadata (title, author, sections).

pointer

Show a laser pointer overlay at specific coordinates.

annotations

Draw annotation strokes on slides.

timer

Presentation timer events and control.

Core Methods(required)

Jump Navigationnavigation.jump

Navigate directly to a specific slide by number.

Section Navigationnavigation.sections

Navigate by named sections/topics instead of slide numbers.

Lifecyclelifecycle

Start, stop, pause, and resume the presentation.

Display Controldisplay

Screen blanking (blackout/whiteout) and overview mode.

Speaker Notescontent.notes

Retrieve speaker notes for any slide.

Metadatacontent.metadata

Retrieve presentation metadata (title, author, sections).

Laser Pointerpointer

Show a laser pointer overlay at specific coordinates.

Annotationsannotations

Draw annotation strokes on slides.

Error Codes

CodeNameDescription
-32700Parse ErrorInvalid JSON
-32600Invalid RequestNot a valid JSON-RPC request
-32601Method Not FoundUnknown method
-32602Invalid ParamsMissing or invalid parameters
-33001Not Initializedppp/initialize not yet called
-33002Already Initializedppp/initialize called twice
-33003Capability Not SupportedPresentation does not support this capability
-33004Slide Out of RangeRequested slide number is invalid
-33005Section Not FoundRequested section does not exist
-33006Presentation Not ActivePresentation is not in play mode