import API.schema """ Define reference structures used by api schemas. """ def load(): API.schema.ref( { "id": "Quaternion", "type": "array", "items": { "type": "number" } } ) API.schema.ref( { "id": "AudioSourceName", "type": "string", "description": "An audio source name" } ) API.schema.ref( { "id": "AudioSourceLayout", "type": "string", "description": "A layout to be used in conjonction with an audio source" } ) API.schema.ref( { "id": "StreamPreset", "type": "object", "properties": { "name": { "type": "string" }, "filename": { "type": "string" }, "bitrate": { "type": "integer" }, "profile": { "type": "string" }, "pub_user": { "type": "string" }, "pub_passwd": { "type": "string" } }, "required": ["name"] } ) API.schema.ref( { "id": "DriveStatus", "description": "Represents a drive status", "type": "string", "enum": ["NoDeviceDetected", "InvalidDevice", "DeviceNotCompatible", "DeviceReadOnly", "DeviceOk", "DeviceRemovable", "NotEnoughMemory"] } ) API.schema.ref( { "id": "Drive", "type": "object", "properties": { "warning_cluster_size": { "type": "boolean" }, "warning_disk_full": { "type": "boolean" }, "free_mb": { "type": ["integer", "null"] }, "total_mb": { "type": ["integer", "null"] }, "state": { "$ref": "DriveStatus" } }, } ) # Messages API.schema.ref( { "id": "Error", "type": "object", "properties": { "code": { "type": "string" }, "message": { "type": ["string", "null"] }, "time": { "type": "integer" }, "id": { "type": "integer" } } } ) API.schema.ref( { "id": "Event", "type": "object", "properties": { "name": { "type": "string" }, "payload": { "type": ["object", "null"] } } } ) API.schema.ref( { "id": "Message", "type": "object", "properties": { "event": { "$ref": "Event" }, "error": { "$ref": "Error" } } } ) # Status API.schema.ref( { "id": "OutputStatus", "description": "Represents the status of an output (stream or record)", "type": "string", "enum": ["Stopped", "Starting", "Started", "Retrying", "Stopping"] } ) API.schema.ref( { "id": "NetworkStatus", "description": "Represents the network (wifi / eth) status", "type": "string", "enum": ["Connected", "Disconnected"] } ) API.schema.ref( { "id": "CameraStatus", "description": "Represents the camera status", "type": "string", "enum": ["Initial", "Discovering", "Connecting", "CheckingFirmware", "FirmwareIncompatible_MustBeUpgraded", "FirmwareCompatible_CanBeUpgraded", "FirmwareIncompatible_CannotBeDowngraded", "FirmwareCompatible_CannotBeDowngraded", "UpdatingFirmware", "FetchingCalibration", "StartingStreams", "Connected"] } ) API.schema.ref( { "id": "SocialNetworkStatus", "description": "Represents the status of a social network", "type": "string", "enum": ["Initial", "CheckingLink", "Linking", "Disconnected", "Connected"] } )