post_verify_code_schema = {
    '$schema': 'http://json-schema.org/draft-07/schema#',
    'description': 'POST schema for verifying a 2fa code',
    'type': 'object',
    'properties': {
        'code': {'type': 'string'},
        'code_type': {'type': 'string'},
    },
    'required': ['code', 'code_type'],
    'additionalProperties': False
}


post_verify_webauthn_schema = {
    '$schema': 'http://json-schema.org/draft-07/schema#',
    'description': 'POST schema for verifying a webauthn login attempt',
    'type': 'object',
    'properties': {
        'successful': {'type': 'boolean'}
    },
    'required': ['successful'],
    'additionalProperties': False
}


post_send_user_email_code_schema = {
    '$schema': 'http://json-schema.org/draft-07/schema#',
    'description': (
        'POST schema for generating a 2fa email - "to" is required for legacy purposes. '
        '"next" is an optional url to redirect to on sign in'
    ),
    'type': 'object',
    'properties': {
        # doesn't need 'to' as we'll just grab user.email_address. but lets keep it
        # as allowed to keep admin code cleaner, but only as null to prevent confusion
        'to': {'type': 'null'},
        'email_auth_link_host': {'type': ['string', 'null']},
        'next': {'type': ['string', 'null']},
    },
    'required': [],
    'additionalProperties': False
}


post_send_user_sms_code_schema = {
    '$schema': 'http://json-schema.org/draft-07/schema#',
    'description': 'POST schema for generating a 2fa sms',
    'type': 'object',
    'properties': {
        'to': {'type': ['string', 'null']},
    },
    'required': [],
    'additionalProperties': False
}


post_set_permissions_schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "description": "POST schema for setting user permissions",
    "type": "object",
    "properties": {
        "permissions": {"type": "array", "items": {"type": "object"}},
        "folder_permissions": {"type": "array", "items": {"type": "string"}}
    },
    "required": ["permissions"],
    "additionalProperties": False
}
