{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "calendar": {
            "type": "object",
            "description": "",
            "properties": {
                "parameter": {
                    "type": "string",
                    "description": "The place parameter to use for selecting dates.",
                    "format": "topic",
                    "default": "date"
                }
            }
        },
        "events": {
            "type": "object",
            "description": "Which events to display in the calendar.",
            "required": [
                "resource"
            ],
            "properties": {
                "resource": {
                    "type": "string",
                    "description": "The name of the events resource to pull events from.",
                    "format": "topic",
                    "default": "events"
                },
                "types": {
                    "type": "array",
                    "description": "The types of events that should be listed (all other events will be ignored)",
                    "items": {
                        "type": "string"
                    },
                    "default": []
                }
            }
        },
        "search": {
            "type": "object",
            "required": [
                "resource"
            ],
            "properties": {
                "resource": {
                    "type": "string",
                    "description": "The name of the resource to subscribe to for search queries.",
                    "format": "topic"
                },
                "fields": {
                    "type": "array",
                    "description": "The list of JSON pointers (or paths) pointing to object members to match.",
                    "items": {
                        "type": [
                            "string",
                            "array"
                        ]
                    }
                },
                "match": {
                    "type": "object",
                    "description": "A mapping from regular expressions to field lists. The last matching group will be searched in the corresponding object members.",
                    "additionalProperties": {
                        "type": "array",
                        "description": "The list of JSON pointers similar to the 'fields' list.",
                        "items": {
                            "type": [
                                "string",
                                "array"
                            ]
                        }
                    }
                }
            }
        },
        "details": {
            "type": "object",
            "description": "How to handle details display.",
            "properties": {
                "resource": {
                    "type": "string",
                    "description": "The name of the resource to publish details with.",
                    "format": "topic"
                },
                "action": {
                    "type": "string",
                    "description": "Which action to trigger when details shall be displayed.",
                    "format": "topic"
                }
            }
        },
        "navigation": {
            "type": "object",
            "description": "Provide a resource representing navigation targets.",
            "properties": {
                "resource": {
                    "type": "string",
                    "format": "topic"
                },
                "interval": {
                    "type": "string",
                    "valid": [
                        "years",
                        "months",
                        "weeks",
                        "days"
                    ]
                }
            }
        }
    }
}