{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Single user details",
    "description": "All fields present in a single user data request.",
    "type": "object",
    "additionalProperties": true,
    "required": [
        "result",
        "jsonrpc",
        "id"
    ],
    "properties": {
        "jsonrpc": {
            "type": "string",
            "enum": [
                "2.0"
            ]
        },
        "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "id",
                "memberType",
                "firstName",
                "middleName",
                "lastName",
                "address",
                "zipcode",
                "city",
                "birthDate",
                "phoneNumber",
                "mobileNumber",
                "email",
                "emailParents",
                "startDate",
                "endDate",
                "memberDay"
            ],
            "properties": {
                "id": {
                    "type": "number"
                },
                "memberType": {
                    "type": "array",
                    "uniqueness": "true",
                    "additionalItems": false,
                    "items": {
                        "type": "string",
                        "enum": [
                            "lid",
                            "begeleider",
                            "bestuur",
                            "sponsor",
                            "ondersteuning",
                            "aspirant_begeleider",
                            "strippenkaart"
                        ]
                    }
                },
                "firstName": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "middleName": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "lastName": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "address": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "zipcode": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "city": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "birthDate": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string",
                            "format": "^\\d{4}-\\d{2}-\\d{2}$"
                        }
                    ]
                },
                "phoneNumber": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string",
                            "format": "^\\d+$"
                        }
                    ]
                },
                "mobileNumber": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string",
                            "format": "^\\d+$"
                        }
                    ]
                },
                "email": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string",
                            "format": "email"
                        }
                    ]
                },
                "emailParents": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string",
                            "format": "email"
                        }
                    ]
                },
                "startDate": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string",
                            "format": "^\\d{4}-\\d{2}-\\d{2}$"
                        }
                    ]
                },
                "endDate": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string",
                            "format": "^\\d{4}-\\d{2}-\\d{2}$"
                        }
                    ]
                },
                "memberDay": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "type": "string",
                            "enum": [
                                "ma",
                                "di",
                                "wo",
                                "do",
                                "vr",
                                "za",
                                "zo"
                            ]
                        }
                    ]
                }
            }
        },
        "id": {
            "type": "number"
        }
    }
}