{
    "description": "Settings schema for Mouser.",
    "properties": {
        "db": {
            "properties": {
                "userCollection": {
                    "description": "Name of the collection to be used to store user data.",
                    "type": "string"
                }
            },
            "required": [
                "userCollection"
            ],
            "type": "object"
        },
        "paths": {
            "default": {},
            "description": "Paths used.",
            "properties": {
                "base": {
                    "_format": "uri",
                    "description": "The base URI of the web application (e.g. https://localhost:8080).",
                    "type": "string"
                },
                "login": {
                    "default": "login",
                    "description": "The path (relative to the base URI) to the login view.",
                    "type": "string"
                },
                "logout": {
                    "default": "logout",
                    "description": "The path (relative to the base URI) to the logout view.",
                    "type": "string"
                }
            },
            "required": [
                "base",
                "login",
                "logout"
            ],
            "type": "object"
        },
        "providers": {
            "description": "Authentication providers.",
            "properties": {
                "facebook": {
                    "properties": {
                        "appId": {
                            "type": "string"
                        },
                        "appSecret": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "appId",
                        "appSecret"
                    ],
                    "type": "object"
                },
                "google": {
                    "properties": {
                        "appId": {
                            "type": "string"
                        },
                        "appSecret": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "appId",
                        "appSecret"
                    ],
                    "type": "object"
                }
            },
            "type": "object"
        },
        "session": {
            "default": {},
            "description": "Information about the client session; how to encrypt it and when it expires.",
            "properties": {
                "cookieName": {
                    "default": "mouser",
                    "description": "The session's cookie name",
                    "type": "string"
                },
                "expiresIn": {
                    "default": 20160,
                    "description": "Amount of seconds before the session expires.",
                    "minimum": 0,
                    "type": "integer"
                },
                "secret": {
                    "description": "The secret used to encrypt the session.",
                    "type": "string"
                }
            },
            "required": [
                "secret",
                "expiresIn",
                "cookieName"
            ],
            "type": "object"
        },
        "token": {
            "default": {},
            "description": "Information about the json web token; how to encrypt it and when it expires.",
            "properties": {
                "expiresIn": {
                    "default": 20160,
                    "description": "Amount of seconds before the token expires.",
                    "minimum": 0,
                    "type": "integer"
                },
                "secret": {
                    "description": "The secret used to encrypt the token.",
                    "type": "string"
                }
            },
            "required": [
                "secret",
                "expiresIn"
            ],
            "type": "object"
        }
    },
    "required": [
        "db",
        "token",
        "session",
        "paths",
        "providers"
    ],
    "type": "object"
}