108 lines
7.5 KiB
Python
108 lines
7.5 KiB
Python
from flask_restx import fields
|
|
from backend.api import api_user, api_recorder, api_v1, api_state
|
|
|
|
generic_id_parser = api_v1.parser()
|
|
generic_id_parser.add_argument('id', type=str, required=True, store_missing=False)
|
|
|
|
user_model = api_user.model('User', {
|
|
'id': fields.String(required=True, description='The user\'s identifier'),
|
|
'first_name': fields.String(required=True, description='The user\'s first name'),
|
|
'last_name': fields.String(required=True, description='The user\'s last name'),
|
|
'email': fields.String(required=True, description='The user\'s email address'),
|
|
'nickname': fields.String(required=False, description='The user\'s nick name'),
|
|
'last_seen': fields.DateTime(required=False, description='Last time user logged in'),
|
|
'last_time_modified': fields.DateTime(required=False, description='Last time user was modified'),
|
|
'role': fields.String(required=False, description='Role a user might have (in addition to group memberships)'),
|
|
'effective_permissions': fields.List(
|
|
fields.String(required=True), required=False, description="List of permissions (groups + (optional) role)."
|
|
),
|
|
'groups': fields.List(
|
|
fields.Nested(api_user.model('user_group', {'id': fields.Integer(), 'name': fields.String()})),
|
|
required=False, description='Group memberships.'),
|
|
'favorite_recorders': fields.List(
|
|
fields.Nested(api_user.model('favorite_recorder',
|
|
{'id': fields.Integer(), 'name': fields.String(), 'offline': fields.Boolean(),
|
|
'created_at': fields.DateTime(), 'last_time_modified': fields.DateTime()})),
|
|
required=False, description='Favorite recorders.'),
|
|
})
|
|
|
|
recorder_model = api_recorder.model('Recorder', {
|
|
'id': fields.String(required=False, description='The recorder\'s identifier'),
|
|
'created_at': fields.DateTime(required=False, description='Creation date of the recorder'),
|
|
'last_time_modified': fields.DateTime(required=False, description='Creation date of the recorder'),
|
|
'name': fields.String(min_length=3, required=True, description='The recorder\'s name'),
|
|
'model_name': fields.String(min_length=3, required=True,
|
|
description='The recorder\'s model name (might slightly '
|
|
'differ from actual name of the model)'),
|
|
'serial_number': fields.String(required=False, description='The recorder\'s serial number'),
|
|
'firmware_version': fields.String(required=False, description='The recorder\'s firmware'),
|
|
|
|
'description': fields.String(required=False, description='The recorder\'s description'),
|
|
'locked': fields.Boolean(required=False, description='Indicates whether the recorder settings can be altered'),
|
|
'lock_message': fields.String(required=False, description='Optional: message explaining lock state'),
|
|
'offline': fields.Boolean(required=False,
|
|
description='Should be set when recorder is disconnected for maintenance, etc.'),
|
|
'additional_camera_connected': fields.Boolean(required=False,
|
|
description='Indicates whether an additional camera is connected'),
|
|
'ip': fields.String(required=False, description='The recorder\'s IP address'),
|
|
'mac': fields.String(required=False, description='The recorder\'s IP address'),
|
|
'network_name': fields.String(required=False, description='The recorder\'s network name'),
|
|
'ssh_port': fields.Integer(required=True, default=22, description='The recorder\'s SSH port number'),
|
|
'telnet_port': fields.Integer(required=True, default=23, description='The recorder\'s telnet port number'),
|
|
# 'use_telnet_instead_ssh': fields.Boolean(required=False, default=False,
|
|
# description='If this is set, telnet will be used instead of ssh. '
|
|
# 'This might require specific commands.'),
|
|
'recorder_model': fields.Nested(api_recorder.model('recorder_model',
|
|
{'id': fields.Integer(),
|
|
'name': fields.String(attribute="model_name", )}),
|
|
required=False,
|
|
allow_null=True,
|
|
skip_none=False,
|
|
description='Model of the recorder.'),
|
|
'room': fields.Nested(api_recorder.model('recorder_room',
|
|
{'id': fields.Integer(), 'name': fields.String(),
|
|
'number': fields.String(), 'alternate_name': fields.String()}),
|
|
r0equired=False,
|
|
allow_null=True,
|
|
skip_none=False,
|
|
description='Room in which the recorder is located.'),
|
|
'virtual_commands': fields.List(fields.Nested(api_recorder.model('recorder_virtual_commands',
|
|
{'id': fields.Integer(),
|
|
'name': fields.String()})))
|
|
})
|
|
|
|
recorder_command_model = api_recorder.model('Recorder Command', {
|
|
'id': fields.String(required=False, description='The recorder command\'s identifier'),
|
|
'name': fields.String(required=True, description='The recorder command\'s name'),
|
|
'alternative_name': fields.String(required=False, description='The recorder command\'s alternative name'),
|
|
'disabled': fields.Boolean(required=False, description='Indicates if the recorder command is disabled'),
|
|
'created_at': fields.DateTime(required=False, description='Creation date of the recorder'),
|
|
'last_time_modified': fields.DateTime(required=False),
|
|
'description': fields.String(required=False, description='The recorder command\'s description'),
|
|
'parameters': fields.Raw(required=True, description='The recorder parameters'),
|
|
'recorder_model': fields.Nested(api_recorder.model('recorder_command_models',
|
|
{'id': fields.Integer(),
|
|
'name': fields.String(attribute="model_name", )})),
|
|
})
|
|
|
|
recorder_model_model = api_recorder.model('Recorder Model', {
|
|
'id': fields.String(required=False, description='The recorder model\'s identifier'),
|
|
'name': fields.String(attribute="model_name", required=True, description='The recorder model\'s name'),
|
|
'created_at': fields.DateTime(required=False, description='Creation date of the recorder'),
|
|
'last_time_modified': fields.DateTime(required=False),
|
|
'notes': fields.String(required=False, description='The recorder model\'s notes'),
|
|
'requires_username': fields.Boolean(),
|
|
'requires_password': fields.Boolean(),
|
|
|
|
'recorders': fields.List(fields.Nested(api_recorder.model('recorder_model',
|
|
{'id': fields.Integer(),
|
|
'name': fields.String(attribute="model_name", ),
|
|
'network_name': fields.String(),
|
|
'ip': fields.String()})), required=False,
|
|
description='Model of the recorder.'),
|
|
'commands': fields.List(fields.Nested(recorder_command_model), attribute="recorder_commands")
|
|
})
|
|
|
|
state_model = api_state.model('Recorder', {
|
|
})
|