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.
All messages follow the JSON-RPC 2.0 specification. Three message types:
// 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 } }During initialization, the presentation declares which capability groups it supports. Controllers should only use methods from supported groups.
coreREQUIREDMandatory protocol handshake and basic navigation. Every PPP implementation must support these methods.
navigation.jumpNavigate directly to a specific slide by number.
navigation.sectionsNavigate by named sections/topics instead of slide numbers.
lifecycleStart, stop, pause, and resume the presentation.
displayScreen blanking (blackout/whiteout) and overview mode.
content.notesRetrieve speaker notes for any slide.
content.thumbnailsRetrieve slide thumbnail images.
content.metadataRetrieve presentation metadata (title, author, sections).
pointerShow a laser pointer overlay at specific coordinates.
annotationsDraw annotation strokes on slides.
timerPresentation timer events and control.
navigation.jumpNavigate directly to a specific slide by number.
navigation.sectionsNavigate by named sections/topics instead of slide numbers.
lifecycleStart, stop, pause, and resume the presentation.
displayScreen blanking (blackout/whiteout) and overview mode.
content.notesRetrieve speaker notes for any slide.
content.metadataRetrieve presentation metadata (title, author, sections).
pointerShow a laser pointer overlay at specific coordinates.
annotationsDraw annotation strokes on slides.
| Code | Name | Description |
|---|---|---|
| -32700 | Parse Error | Invalid JSON |
| -32600 | Invalid Request | Not a valid JSON-RPC request |
| -32601 | Method Not Found | Unknown method |
| -32602 | Invalid Params | Missing or invalid parameters |
| -33001 | Not Initialized | ppp/initialize not yet called |
| -33002 | Already Initialized | ppp/initialize called twice |
| -33003 | Capability Not Supported | Presentation does not support this capability |
| -33004 | Slide Out of Range | Requested slide number is invalid |
| -33005 | Section Not Found | Requested section does not exist |
| -33006 | Presentation Not Active | Presentation is not in play mode |