{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "RecvMessage", "oneOf": [ { "type": "object", "oneOf": [ { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "Control" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "$ref": "#/definitions/VeilidState" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "GetState" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "null" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "Attach" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "null" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "Detach" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "$ref": "#/definitions/NewPrivateRouteResult" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "NewPrivateRoute" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "$ref": "#/definitions/NewPrivateRouteResult" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "NewCustomPrivateRoute" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "ImportRemotePrivateRoute" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "null" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "ReleasePrivateRoute" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "null" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "AppCallReply" ] } } }, { "type": "object", "required": [ "op", "value" ], "properties": { "op": { "type": "string", "enum": [ "NewRoutingContext" ] }, "value": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "oneOf": [ { "type": "object", "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "InvalidId" ] } } }, { "type": "object", "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "Release" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "WithPrivacy" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "WithCustomPrivacy" ] } } }, { "type": "object", "required": [ "rc_op", "value" ], "properties": { "rc_op": { "type": "string", "enum": [ "WithSequencing" ] }, "value": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "AppCall" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "null" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "AppMessage" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "$ref": "#/definitions/DHTRecordDescriptor" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "CreateDhtRecord" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "$ref": "#/definitions/DHTRecordDescriptor" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "OpenDhtRecord" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "null" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "CloseDhtRecord" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "null" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "DeleteDhtRecord" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "properties": { "value": { "anyOf": [ { "$ref": "#/definitions/ValueData" }, { "type": "null" } ] } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "GetDhtValue" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "properties": { "value": { "anyOf": [ { "$ref": "#/definitions/ValueData" }, { "type": "null" } ] } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "SetDhtValue" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "WatchDhtValues" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "boolean" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "rc_op" ], "properties": { "rc_op": { "type": "string", "enum": [ "CancelDhtWatch" ] } } } ], "required": [ "op", "rc_id" ], "properties": { "op": { "type": "string", "enum": [ "RoutingContext" ] }, "rc_id": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "OpenTableDb" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "boolean" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "DeleteTableDb" ] } } }, { "type": "object", "oneOf": [ { "type": "object", "required": [ "db_op" ], "properties": { "db_op": { "type": "string", "enum": [ "InvalidId" ] } } }, { "type": "object", "required": [ "db_op" ], "properties": { "db_op": { "type": "string", "enum": [ "Release" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "db_op" ], "properties": { "db_op": { "type": "string", "enum": [ "GetColumnCount" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "db_op" ], "properties": { "db_op": { "type": "string", "enum": [ "GetKeys" ] } } }, { "type": "object", "required": [ "db_op", "value" ], "properties": { "db_op": { "type": "string", "enum": [ "Transact" ] }, "value": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "null" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "db_op" ], "properties": { "db_op": { "type": "string", "enum": [ "Store" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "properties": { "value": { "type": [ "string", "null" ] } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "db_op" ], "properties": { "db_op": { "type": "string", "enum": [ "Load" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "properties": { "value": { "type": [ "string", "null" ] } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "db_op" ], "properties": { "db_op": { "type": "string", "enum": [ "Delete" ] } } } ], "required": [ "db_id", "op" ], "properties": { "db_id": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "op": { "type": "string", "enum": [ "TableDb" ] } } }, { "type": "object", "oneOf": [ { "type": "object", "required": [ "tx_op" ], "properties": { "tx_op": { "type": "string", "enum": [ "InvalidId" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "null" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "tx_op" ], "properties": { "tx_op": { "type": "string", "enum": [ "Commit" ] } } }, { "type": "object", "required": [ "tx_op" ], "properties": { "tx_op": { "type": "string", "enum": [ "Rollback" ] } } }, { "type": "object", "required": [ "tx_op" ], "properties": { "tx_op": { "type": "string", "enum": [ "Store" ] } } }, { "type": "object", "required": [ "tx_op" ], "properties": { "tx_op": { "type": "string", "enum": [ "Delete" ] } } } ], "required": [ "op", "tx_id" ], "properties": { "op": { "type": "string", "enum": [ "TableDbTransaction" ] }, "tx_id": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "GetCryptoSystem" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "BestCryptoSystem" ] } } }, { "type": "object", "oneOf": [ { "type": "object", "required": [ "cs_op" ], "properties": { "cs_op": { "type": "string", "enum": [ "InvalidId" ] } } }, { "type": "object", "required": [ "cs_op" ], "properties": { "cs_op": { "type": "string", "enum": [ "Release" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "cs_op" ], "properties": { "cs_op": { "type": "string", "enum": [ "CachedDh" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "cs_op" ], "properties": { "cs_op": { "type": "string", "enum": [ "ComputeDh" ] } } }, { "type": "object", "required": [ "cs_op", "value" ], "properties": { "cs_op": { "type": "string", "enum": [ "RandomBytes" ] }, "value": { "type": "string" } } }, { "type": "object", "required": [ "cs_op", "value" ], "properties": { "cs_op": { "type": "string", "enum": [ "DefaultSaltLength" ] }, "value": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "cs_op" ], "properties": { "cs_op": { "type": "string", "enum": [ "HashPassword" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "boolean" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "cs_op" ], "properties": { "cs_op": { "type": "string", "enum": [ "VerifyPassword" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "cs_op" ], "properties": { "cs_op": { "type": "string", "enum": [ "DeriveSharedSecret" ] } } }, { "type": "object", "required": [ "cs_op", "value" ], "properties": { "cs_op": { "type": "string", "enum": [ "RandomNonce" ] }, "value": { "type": "string" } } }, { "type": "object", "required": [ "cs_op", "value" ], "properties": { "cs_op": { "type": "string", "enum": [ "RandomSharedSecret" ] }, "value": { "type": "string" } } }, { "type": "object", "required": [ "cs_op", "value" ], "properties": { "cs_op": { "type": "string", "enum": [ "GenerateKeyPair" ] }, "value": { "type": "string" } } }, { "type": "object", "required": [ "cs_op", "value" ], "properties": { "cs_op": { "type": "string", "enum": [ "GenerateHash" ] }, "value": { "type": "string" } } }, { "type": "object", "required": [ "cs_op", "value" ], "properties": { "cs_op": { "type": "string", "enum": [ "ValidateKeyPair" ] }, "value": { "type": "boolean" } } }, { "type": "object", "required": [ "cs_op", "value" ], "properties": { "cs_op": { "type": "string", "enum": [ "ValidateHash" ] }, "value": { "type": "boolean" } } }, { "type": "object", "required": [ "cs_op", "value" ], "properties": { "cs_op": { "type": "string", "enum": [ "Distance" ] }, "value": { "type": "string" } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "cs_op" ], "properties": { "cs_op": { "type": "string", "enum": [ "Sign" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "null" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "cs_op" ], "properties": { "cs_op": { "type": "string", "enum": [ "Verify" ] } } }, { "type": "object", "required": [ "cs_op", "value" ], "properties": { "cs_op": { "type": "string", "enum": [ "AeadOverhead" ] }, "value": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "cs_op" ], "properties": { "cs_op": { "type": "string", "enum": [ "DecryptAead" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "cs_op" ], "properties": { "cs_op": { "type": "string", "enum": [ "EncryptAead" ] } } }, { "type": "object", "required": [ "cs_op", "value" ], "properties": { "cs_op": { "type": "string", "enum": [ "CryptNoAuth" ] }, "value": { "type": "string" } } } ], "required": [ "cs_id", "op" ], "properties": { "cs_id": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "op": { "type": "string", "enum": [ "CryptoSystem" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "VerifySignatures" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "GenerateSignatures" ] } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "GenerateKeyPair" ] } } }, { "type": "object", "required": [ "op", "value" ], "properties": { "op": { "type": "string", "enum": [ "Now" ] }, "value": { "type": "string" } } }, { "type": "object", "anyOf": [ { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "$ref": "#/definitions/VeilidAPIError" } } } ], "required": [ "op" ], "properties": { "op": { "type": "string", "enum": [ "Debug" ] } } }, { "type": "object", "required": [ "op", "value" ], "properties": { "op": { "type": "string", "enum": [ "VeilidVersionString" ] }, "value": { "type": "string" } } }, { "type": "object", "required": [ "major", "minor", "op", "patch" ], "properties": { "major": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "minor": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "op": { "type": "string", "enum": [ "VeilidVersion" ] }, "patch": { "type": "integer", "format": "uint32", "minimum": 0.0 } } } ], "required": [ "type" ], "properties": { "id": { "description": "Operation Id (pairs with Request, or empty if unidirectional)", "default": 0, "type": "integer", "format": "uint32", "minimum": 0.0 }, "type": { "type": "string", "enum": [ "Response" ] } } }, { "type": "object", "oneOf": [ { "description": "A VeilidCore log message with optional backtrace", "type": "object", "required": [ "kind", "log_level", "message" ], "properties": { "backtrace": { "type": [ "string", "null" ] }, "kind": { "type": "string", "enum": [ "Log" ] }, "log_level": { "$ref": "#/definitions/VeilidLogLevel" }, "message": { "type": "string" } } }, { "description": "Direct statement blob passed to hosting application for processing", "type": "object", "required": [ "kind", "message" ], "properties": { "kind": { "type": "string", "enum": [ "AppMessage" ] }, "message": { "description": "The content of the message to deliver to the application", "type": "string" }, "sender": { "description": "Some(sender) if the message was sent directly, None if received via a private/safety route", "type": [ "string", "null" ] } } }, { "description": "Direct question blob passed to hosting application for processing to send an eventual AppReply", "type": "object", "required": [ "id", "kind", "message" ], "properties": { "id": { "description": "The id to reply to", "type": "string" }, "kind": { "type": "string", "enum": [ "AppCall" ] }, "message": { "description": "The content of the request to deliver to the application", "type": "string" }, "sender": { "description": "Some(sender) if the request was sent directly, None if received via a private/safety route", "type": [ "string", "null" ] } } }, { "type": "object", "required": [ "kind", "local_network_ready", "public_internet_ready", "state" ], "properties": { "kind": { "type": "string", "enum": [ "Attachment" ] }, "local_network_ready": { "type": "boolean" }, "public_internet_ready": { "type": "boolean" }, "state": { "$ref": "#/definitions/AttachmentState" } } }, { "type": "object", "required": [ "bps_down", "bps_up", "kind", "peers", "started" ], "properties": { "bps_down": { "type": "string" }, "bps_up": { "type": "string" }, "kind": { "type": "string", "enum": [ "Network" ] }, "peers": { "type": "array", "items": { "$ref": "#/definitions/PeerTableData" } }, "started": { "type": "boolean" } } }, { "type": "object", "required": [ "config", "kind" ], "properties": { "config": { "$ref": "#/definitions/VeilidConfigInner" }, "kind": { "type": "string", "enum": [ "Config" ] } } }, { "type": "object", "required": [ "dead_remote_routes", "dead_routes", "kind" ], "properties": { "dead_remote_routes": { "type": "array", "items": { "type": "string" } }, "dead_routes": { "type": "array", "items": { "type": "string" } }, "kind": { "type": "string", "enum": [ "RouteChange" ] } } }, { "type": "object", "required": [ "count", "key", "kind", "subkeys", "value" ], "properties": { "count": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "key": { "type": "string" }, "kind": { "type": "string", "enum": [ "ValueChange" ] }, "subkeys": { "type": "array", "items": { "type": "integer", "format": "uint32", "minimum": 0.0 } }, "value": { "$ref": "#/definitions/ValueData" } } }, { "type": "object", "required": [ "kind" ], "properties": { "kind": { "type": "string", "enum": [ "Shutdown" ] } } } ], "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Update" ] } } } ], "definitions": { "AttachmentState": { "description": "Attachment abstraction for network 'signal strength'", "type": "string", "enum": [ "Detached", "Attaching", "AttachedWeak", "AttachedGood", "AttachedStrong", "FullyAttached", "OverAttached", "Detaching" ] }, "DHTRecordDescriptor": { "description": "DHT Record Descriptor", "type": "object", "required": [ "key", "owner", "schema" ], "properties": { "key": { "description": "DHT Key = Hash(ownerKeyKind) of: [ ownerKeyValue, schema ]", "type": "string" }, "owner": { "description": "The public key of the owner", "type": "string" }, "owner_secret": { "description": "If this key is being created: Some(the secret key of the owner) If this key is just being opened: None", "type": [ "string", "null" ] }, "schema": { "description": "The schema in use associated with the key", "allOf": [ { "$ref": "#/definitions/DHTSchema" } ] } } }, "DHTSchema": { "description": "Enum over all the supported DHT Schemas", "oneOf": [ { "description": "Default DHT Schema (DFLT)", "type": "object", "required": [ "kind", "o_cnt" ], "properties": { "kind": { "type": "string", "enum": [ "DFLT" ] }, "o_cnt": { "description": "Owner subkey count", "type": "integer", "format": "uint16", "minimum": 0.0 } } }, { "description": "Simple DHT Schema (SMPL)", "type": "object", "required": [ "kind", "members", "o_cnt" ], "properties": { "kind": { "type": "string", "enum": [ "SMPL" ] }, "members": { "description": "Members", "type": "array", "items": { "$ref": "#/definitions/DHTSchemaSMPLMember" } }, "o_cnt": { "description": "Owner subkey count", "type": "integer", "format": "uint16", "minimum": 0.0 } } } ] }, "DHTSchemaSMPLMember": { "description": "Simple DHT Schema (SMPL) Member", "type": "object", "required": [ "m_cnt", "m_key" ], "properties": { "m_cnt": { "description": "Member subkey count", "type": "integer", "format": "uint16", "minimum": 0.0 }, "m_key": { "description": "Member key", "type": "string" } } }, "LatencyStats": { "type": "object", "required": [ "average", "fastest", "slowest" ], "properties": { "average": { "type": "string" }, "fastest": { "type": "string" }, "slowest": { "type": "string" } } }, "NewPrivateRouteResult": { "type": "object", "required": [ "blob", "route_id" ], "properties": { "blob": { "type": "string" }, "route_id": { "type": "string" } } }, "PeerStats": { "type": "object", "required": [ "rpc_stats", "time_added", "transfer" ], "properties": { "latency": { "anyOf": [ { "$ref": "#/definitions/LatencyStats" }, { "type": "null" } ] }, "rpc_stats": { "$ref": "#/definitions/RPCStats" }, "time_added": { "type": "string" }, "transfer": { "$ref": "#/definitions/TransferStatsDownUp" } } }, "PeerTableData": { "type": "object", "required": [ "node_ids", "peer_address", "peer_stats" ], "properties": { "node_ids": { "type": "array", "items": { "type": "string" } }, "peer_address": { "type": "string" }, "peer_stats": { "$ref": "#/definitions/PeerStats" } } }, "RPCStats": { "type": "object", "required": [ "failed_to_send", "messages_rcvd", "messages_sent", "questions_in_flight", "recent_lost_answers" ], "properties": { "failed_to_send": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "first_consecutive_seen_ts": { "type": [ "string", "null" ] }, "last_question_ts": { "type": [ "string", "null" ] }, "last_seen_ts": { "type": [ "string", "null" ] }, "messages_rcvd": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "messages_sent": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "questions_in_flight": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "recent_lost_answers": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, "TransferStats": { "type": "object", "required": [ "average", "maximum", "minimum", "total" ], "properties": { "average": { "type": "string" }, "maximum": { "type": "string" }, "minimum": { "type": "string" }, "total": { "type": "string" } } }, "TransferStatsDownUp": { "type": "object", "required": [ "down", "up" ], "properties": { "down": { "$ref": "#/definitions/TransferStats" }, "up": { "$ref": "#/definitions/TransferStats" } } }, "ValueData": { "type": "object", "required": [ "data", "seq", "writer" ], "properties": { "data": { "description": "The contents of a DHT Record", "type": "string" }, "seq": { "description": "An increasing sequence number to time-order the DHT record changes", "type": "integer", "format": "uint32", "minimum": 0.0 }, "writer": { "description": "The public identity key of the writer of the data", "type": "string" } } }, "VeilidAPIError": { "oneOf": [ { "type": "object", "required": [ "kind" ], "properties": { "kind": { "type": "string", "enum": [ "NotInitialized" ] } } }, { "type": "object", "required": [ "kind" ], "properties": { "kind": { "type": "string", "enum": [ "AlreadyInitialized" ] } } }, { "type": "object", "required": [ "kind" ], "properties": { "kind": { "type": "string", "enum": [ "Timeout" ] } } }, { "type": "object", "required": [ "kind" ], "properties": { "kind": { "type": "string", "enum": [ "TryAgain" ] } } }, { "type": "object", "required": [ "kind" ], "properties": { "kind": { "type": "string", "enum": [ "Shutdown" ] } } }, { "type": "object", "required": [ "kind" ], "properties": { "kind": { "type": "string", "enum": [ "InvalidTarget" ] } } }, { "type": "object", "required": [ "kind", "message" ], "properties": { "kind": { "type": "string", "enum": [ "NoConnection" ] }, "message": { "type": "string" } } }, { "type": "object", "required": [ "key", "kind" ], "properties": { "key": { "type": "string" }, "kind": { "type": "string", "enum": [ "KeyNotFound" ] } } }, { "type": "object", "required": [ "kind", "message" ], "properties": { "kind": { "type": "string", "enum": [ "Internal" ] }, "message": { "type": "string" } } }, { "type": "object", "required": [ "kind", "message" ], "properties": { "kind": { "type": "string", "enum": [ "Unimplemented" ] }, "message": { "type": "string" } } }, { "type": "object", "required": [ "kind", "message", "value" ], "properties": { "kind": { "type": "string", "enum": [ "ParseError" ] }, "message": { "type": "string" }, "value": { "type": "string" } } }, { "type": "object", "required": [ "argument", "context", "kind", "value" ], "properties": { "argument": { "type": "string" }, "context": { "type": "string" }, "kind": { "type": "string", "enum": [ "InvalidArgument" ] }, "value": { "type": "string" } } }, { "type": "object", "required": [ "argument", "context", "kind" ], "properties": { "argument": { "type": "string" }, "context": { "type": "string" }, "kind": { "type": "string", "enum": [ "MissingArgument" ] } } }, { "type": "object", "required": [ "kind", "message" ], "properties": { "kind": { "type": "string", "enum": [ "Generic" ] }, "message": { "type": "string" } } } ] }, "VeilidConfigApplication": { "description": "Application configuration\n\nConfigure web access to the Prograssive Web App (PWA)\n\nTo be implemented...", "type": "object", "required": [ "http", "https" ], "properties": { "http": { "$ref": "#/definitions/VeilidConfigHTTP" }, "https": { "$ref": "#/definitions/VeilidConfigHTTPS" } } }, "VeilidConfigBlockStore": { "type": "object", "required": [ "delete", "directory" ], "properties": { "delete": { "type": "boolean" }, "directory": { "type": "string" } } }, "VeilidConfigCapabilities": { "type": "object", "required": [ "protocol_accept_tcp", "protocol_accept_ws", "protocol_accept_wss", "protocol_connect_tcp", "protocol_connect_ws", "protocol_connect_wss", "protocol_udp" ], "properties": { "protocol_accept_tcp": { "type": "boolean" }, "protocol_accept_ws": { "type": "boolean" }, "protocol_accept_wss": { "type": "boolean" }, "protocol_connect_tcp": { "type": "boolean" }, "protocol_connect_ws": { "type": "boolean" }, "protocol_connect_wss": { "type": "boolean" }, "protocol_udp": { "type": "boolean" } } }, "VeilidConfigDHT": { "description": "Configure the Distributed Hash Table (DHT)", "type": "object", "required": [ "get_value_count", "get_value_fanout", "get_value_timeout_ms", "local_max_subkey_cache_memory_mb", "local_subkey_cache_size", "max_find_node_count", "min_peer_count", "min_peer_refresh_time_ms", "remote_max_records", "remote_max_storage_space_mb", "remote_max_subkey_cache_memory_mb", "remote_subkey_cache_size", "resolve_node_count", "resolve_node_fanout", "resolve_node_timeout_ms", "set_value_count", "set_value_fanout", "set_value_timeout_ms", "validate_dial_info_receipt_time_ms" ], "properties": { "get_value_count": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "get_value_fanout": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "get_value_timeout_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "local_max_subkey_cache_memory_mb": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "local_subkey_cache_size": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "max_find_node_count": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "min_peer_count": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "min_peer_refresh_time_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "remote_max_records": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "remote_max_storage_space_mb": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "remote_max_subkey_cache_memory_mb": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "remote_subkey_cache_size": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "resolve_node_count": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "resolve_node_fanout": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "resolve_node_timeout_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "set_value_count": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "set_value_fanout": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "set_value_timeout_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "validate_dial_info_receipt_time_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, "VeilidConfigHTTP": { "description": "Enable and configure HTTP access to the Veilid node\n\n```yaml http: enabled: false listen_address: ':5150' path: 'app\" url: 'https://localhost:5150' ```", "type": "object", "required": [ "enabled", "listen_address", "path" ], "properties": { "enabled": { "type": "boolean" }, "listen_address": { "type": "string" }, "path": { "type": "string" }, "url": { "type": [ "string", "null" ] } } }, "VeilidConfigHTTPS": { "description": "Enable and configure HTTPS access to the Veilid node\n\n```yaml https: enabled: false listen_address: ':5150' path: 'app' url: 'https://localhost:5150' ```", "type": "object", "required": [ "enabled", "listen_address", "path" ], "properties": { "enabled": { "type": "boolean" }, "listen_address": { "type": "string" }, "path": { "type": "string" }, "url": { "type": [ "string", "null" ] } } }, "VeilidConfigInner": { "type": "object", "required": [ "block_store", "capabilities", "namespace", "network", "program_name", "protected_store", "table_store" ], "properties": { "block_store": { "$ref": "#/definitions/VeilidConfigBlockStore" }, "capabilities": { "$ref": "#/definitions/VeilidConfigCapabilities" }, "namespace": { "type": "string" }, "network": { "$ref": "#/definitions/VeilidConfigNetwork" }, "program_name": { "type": "string" }, "protected_store": { "$ref": "#/definitions/VeilidConfigProtectedStore" }, "table_store": { "$ref": "#/definitions/VeilidConfigTableStore" } } }, "VeilidConfigNetwork": { "type": "object", "required": [ "application", "client_whitelist_timeout_ms", "connection_inactivity_timeout_ms", "connection_initial_timeout_ms", "detect_address_changes", "dht", "hole_punch_receipt_time_ms", "max_connection_frequency_per_min", "max_connections_per_ip4", "max_connections_per_ip6_prefix", "max_connections_per_ip6_prefix_size", "protocol", "restricted_nat_retries", "reverse_connection_receipt_time_ms", "routing_table", "rpc", "tls", "upnp" ], "properties": { "application": { "$ref": "#/definitions/VeilidConfigApplication" }, "client_whitelist_timeout_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "connection_inactivity_timeout_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "connection_initial_timeout_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "detect_address_changes": { "type": "boolean" }, "dht": { "$ref": "#/definitions/VeilidConfigDHT" }, "hole_punch_receipt_time_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "max_connection_frequency_per_min": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "max_connections_per_ip4": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "max_connections_per_ip6_prefix": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "max_connections_per_ip6_prefix_size": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "protocol": { "$ref": "#/definitions/VeilidConfigProtocol" }, "restricted_nat_retries": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "reverse_connection_receipt_time_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "routing_table": { "$ref": "#/definitions/VeilidConfigRoutingTable" }, "rpc": { "$ref": "#/definitions/VeilidConfigRPC" }, "tls": { "$ref": "#/definitions/VeilidConfigTLS" }, "upnp": { "type": "boolean" } } }, "VeilidConfigProtectedStore": { "type": "object", "required": [ "allow_insecure_fallback", "always_use_insecure_storage", "delete", "device_encryption_key_password", "directory" ], "properties": { "allow_insecure_fallback": { "type": "boolean" }, "always_use_insecure_storage": { "type": "boolean" }, "delete": { "type": "boolean" }, "device_encryption_key_password": { "type": "string" }, "directory": { "type": "string" }, "new_device_encryption_key_password": { "type": [ "string", "null" ] } } }, "VeilidConfigProtocol": { "description": "Configure Network Protocols\n\nVeilid can communicate over UDP, TCP, and Web Sockets.\n\nAll protocols are available by default, and the Veilid node will sort out which protocol is used for each peer connection.", "type": "object", "required": [ "tcp", "udp", "ws", "wss" ], "properties": { "tcp": { "$ref": "#/definitions/VeilidConfigTCP" }, "udp": { "$ref": "#/definitions/VeilidConfigUDP" }, "ws": { "$ref": "#/definitions/VeilidConfigWS" }, "wss": { "$ref": "#/definitions/VeilidConfigWSS" } } }, "VeilidConfigRPC": { "description": "Configure RPC", "type": "object", "required": [ "concurrency", "default_route_hop_count", "max_route_hop_count", "queue_size", "timeout_ms" ], "properties": { "concurrency": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "default_route_hop_count": { "type": "integer", "format": "uint8", "minimum": 0.0 }, "max_route_hop_count": { "type": "integer", "format": "uint8", "minimum": 0.0 }, "max_timestamp_ahead_ms": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "max_timestamp_behind_ms": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "queue_size": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "timeout_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, "VeilidConfigRoutingTable": { "description": "Configure the network routing table", "type": "object", "required": [ "bootstrap", "limit_attached_good", "limit_attached_strong", "limit_attached_weak", "limit_fully_attached", "limit_over_attached", "node_id", "node_id_secret" ], "properties": { "bootstrap": { "type": "array", "items": { "type": "string" } }, "limit_attached_good": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "limit_attached_strong": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "limit_attached_weak": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "limit_fully_attached": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "limit_over_attached": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "node_id": { "type": "array", "items": { "type": "string" } }, "node_id_secret": { "type": "array", "items": { "type": "string" } } } }, "VeilidConfigTCP": { "description": "Enable and configure TCP\n\n```yaml tcp: connect: true listen: true max_connections: 32 listen_address: ':5150' public_address: ''", "type": "object", "required": [ "connect", "listen", "listen_address", "max_connections" ], "properties": { "connect": { "type": "boolean" }, "listen": { "type": "boolean" }, "listen_address": { "type": "string" }, "max_connections": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "public_address": { "type": [ "string", "null" ] } } }, "VeilidConfigTLS": { "description": "Configure TLS\n\n```yaml tls: certificate_path: /path/to/cert private_key_path: /path/to/private/key connection_initial_timeout_ms: 2000", "type": "object", "required": [ "certificate_path", "connection_initial_timeout_ms", "private_key_path" ], "properties": { "certificate_path": { "type": "string" }, "connection_initial_timeout_ms": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "private_key_path": { "type": "string" } } }, "VeilidConfigTableStore": { "type": "object", "required": [ "delete", "directory" ], "properties": { "delete": { "type": "boolean" }, "directory": { "type": "string" } } }, "VeilidConfigUDP": { "description": "Enable and configure UDP\n\n```yaml udp: enabled: true socket_pool_size: 0 listen_address: ':5150' public_address: '' ```", "type": "object", "required": [ "enabled", "listen_address", "socket_pool_size" ], "properties": { "enabled": { "type": "boolean" }, "listen_address": { "type": "string" }, "public_address": { "type": [ "string", "null" ] }, "socket_pool_size": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, "VeilidConfigWS": { "description": "Enable and configure Web Sockets\n\n```yaml ws: connect: true listen: true max_connections: 16 listen_address: ':5150' path: 'ws' url: 'ws://localhost:5150/ws'", "type": "object", "required": [ "connect", "listen", "listen_address", "max_connections", "path" ], "properties": { "connect": { "type": "boolean" }, "listen": { "type": "boolean" }, "listen_address": { "type": "string" }, "max_connections": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "path": { "type": "string" }, "url": { "type": [ "string", "null" ] } } }, "VeilidConfigWSS": { "description": "Enable and configure Secure Web Sockets\n\n```yaml wss: connect: true listen: false max_connections: 16 listen_address: ':5150' path: 'ws' url: ''", "type": "object", "required": [ "connect", "listen", "listen_address", "max_connections", "path" ], "properties": { "connect": { "type": "boolean" }, "listen": { "type": "boolean" }, "listen_address": { "type": "string" }, "max_connections": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "path": { "type": "string" }, "url": { "type": [ "string", "null" ] } } }, "VeilidLogLevel": { "description": "Log level for VeilidCore", "type": "string", "enum": [ "Error", "Warn", "Info", "Debug", "Trace" ] }, "VeilidState": { "type": "object", "required": [ "attachment", "config", "network" ], "properties": { "attachment": { "$ref": "#/definitions/VeilidStateAttachment" }, "config": { "$ref": "#/definitions/VeilidStateConfig" }, "network": { "$ref": "#/definitions/VeilidStateNetwork" } } }, "VeilidStateAttachment": { "type": "object", "required": [ "local_network_ready", "public_internet_ready", "state" ], "properties": { "local_network_ready": { "type": "boolean" }, "public_internet_ready": { "type": "boolean" }, "state": { "$ref": "#/definitions/AttachmentState" } } }, "VeilidStateConfig": { "type": "object", "required": [ "config" ], "properties": { "config": { "$ref": "#/definitions/VeilidConfigInner" } } }, "VeilidStateNetwork": { "type": "object", "required": [ "bps_down", "bps_up", "peers", "started" ], "properties": { "bps_down": { "type": "string" }, "bps_up": { "type": "string" }, "peers": { "type": "array", "items": { "$ref": "#/definitions/PeerTableData" } }, "started": { "type": "boolean" } } } } }