JSON Schema File

ID

https://example.com/schema/lom.schema.json

Title

LOM

Description

Specification of the wireframe of a single Web page

Diagram

Drilldown into /$defs/Event Drilldown into /$defs/Zone Drilldown into /$defs/Zone Drilldown into /$defs/Bounds Drilldown into /$defs/Bounds Drilldown into /$defs/Path Drilldown into /$defs/Path Drilldown into /$defs/Path Drilldown into /$defs/Dimension Drilldown into /$defs/Dimension Drilldown into /$defs/Dimension Drilldown into /properties/events Drilldown into /properties/events Drilldown into /properties/loms Drilldown into /$defs/Dimension Drilldown into /$defs/Dimension Drilldown into /$defs/Dimension Drilldown into /$defs/Dimension Drilldown into /$defs/Dimension Drilldown into /$defs/Dimension Drilldown into /$defs/Path Drilldown into /$defs/Path Drilldown into /$defs/PathJSON Schema Diagram of /

Value

Object

Properties

Property Name Type Description
rootPath string Path (lom.schema.json)
pageWidth number Dimension (lom.schema.json)
pageHeight number Dimension (lom.schema.json)
loms object loms (lom.schema.json)
events array events (lom.schema.json)
Additional Properties Type Description
Any Property Any All values are valid, no restrictions.

Source

{
    "$schema": "https://json-schema.org/draft/2019-09/schema",
    "$id": "https://example.com/schema/lom.schema.json",
    "type": "object",
    "title": "LOM",
    "description": "Specification of the wireframe of a single Web page",
    "additionalProperties": true,
    "properties": {
        "rootPath": {
            "$ref": "#/$defs/Path"
        },
        "pageWidth": {
            "$ref": "#/$defs/Dimension"
        },
        "pageHeight": {
            "$ref": "#/$defs/Dimension"
        },
        "loms": {
            "type": "object",
            "additionalProperties": false,
            "patternProperties": {
                "/?(([a-zA-Z0-9._-]+)(/[a-zA-Z0-9._-]+)*)?": {
                    "$ref": "#/$defs/Zone"
                }
            }
        },
        "events": {
            "type": "array",
            "description": "List of all events captured in recorded session",
            "items": {
                "$ref": "#/$defs/Event"
            }
        }
    },
    "required": [
        "rootPath",
        "pageWidth",
        "pageHeight",
        "loms",
        "events"
    ],
    "$defs": {
        "Dimension": {
            "type": "number",
            "description": "Size of a graphical element along an axis",
            "minimum": 0
        },
        "Path": {
            "type": "string",
            "description": "A slash separated path",
            "pattern": "/?(([a-zA-Z0-9._-]+)(/[a-zA-Z0-9._-]+)*)?"
        },
        "Bounds": {
            "type": "object",
            "description": "Coordinates of an axis-aligned rectangle",
            "additionalProperties": false,
            "properties": {
                "x": {
                    "type": "number",
                    "description": "x coordinate relative to parent zone"
                },
                "y": {
                    "type": "number",
                    "description": "y coordinate relative to parent zone"
                },
                "width": {
                    "$ref": "#/$defs/Dimension"
                },
                "height": {
                    "$ref": "#/$defs/Dimension"
                }
            },
            "required": [
                "x",
                "width",
                "height",
                "y"
            ]
        },
        "Zone": {
            "type": "object",
            "description": "Representation of a zone on screen",
            "properties": {
                "zoneId": {
                    "type": "string",
                    "description": "Unique ID of this zone"
                },
                "bounds": {
                    "$ref": "#/$defs/Bounds"
                },
                "children": {
                    "type": "array",
                    "description": "List of children zones of this zone",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/$defs/Zone"
                    }
                },
                "link": {
                    "$ref": "#/$defs/Path"
                },
                "style": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "background": {
                            "type": "string"
                        },
                        "border": {
                            "type": "string"
                        }
                    }
                }
            },
            "required": [
                "bounds"
            ]
        },
        "Event": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Type of the JS event captured"
                },
                "interactionType": {
                    "type": "string",
                    "description": "Type of interaction this event denotes",
                    "enum": [
                        "exploration",
                        "action"
                    ]
                },
                "timeStamp": {
                    "type": "number",
                    "description": "Time (in milliseconds) at which the event occured"
                },
                "isTrusted": {
                    "type": "boolean",
                    "description": "True when the event was generated by a user action, false otherwise"
                },
                "altKey": {
                    "type": "boolean",
                    "description": "Boolean denoting if the ALT key was down when event occured",
                    "default": false
                },
                "ctrlKey": {
                    "type": "boolean",
                    "description": "Boolean denoting if the CTRL key was down when event occured",
                    "default": false
                },
                "shiftKey": {
                    "type": "boolean",
                    "description": "Boolean denoting if the SHIFT key was down when event occured",
                    "default": false
                },
                "metaKey": {
                    "type": "boolean",
                    "description": "Boolean denoting if the META key was down when event occured",
                    "default": false
                },
                "mouseButton": {
                    "type": "number",
                    "description": "Which button was pressed on the mouse to trigger the event"
                },
                "mouseButtons": {
                    "type": "number",
                    "description": "Which button were down on the mouse when the event occured"
                },
                "pageX": {
                    "type": "number",
                    "description": "Vertical coordinate within the application's viewport at which the event occurred"
                },
                "pageY": {
                    "type": "number",
                    "description": "Boolean denoting if the SHIFT key was down when event occured"
                },
                "lomId": {
                    "type": "string",
                    "description": "ID of the LOM in which the event occured"
                },
                "zoneId": {
                    "type": "string",
                    "description": "ID of the LOM zone in which the event occured"
                },
                "viewport": {
                    "$ref": "#/$defs/Bounds",
                    "description": "Visible zone of the document body when event occured"
                }
            },
            "required": [
                "type",
                "interactionType",
                "timeStamp",
                "isTrusted"
            ]
        }
    }
}
C:\Users\pilou\Workspaces\IntelliJ-IDEA\UX-Key\lom-format\lom.schema.json (1:2)