route_clients = { "type": "string", "description": "Client-ID", "example": "proj-x-relay", } message_header = { "type": "object", "properties": { "message_ID": { "type": "string", "format": "uuid", "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", "description": "An identifier for the type of message received.", "example": "b427003c-0000-11aa-a1eb-b1cdf2342fdd", }, "timestamp": { "type": "string", "format": "date-time", "description": "Timestamp of message", "example": "2022-11-16T00:00:00Z", }, "source": { "type": "string", "description": "The sender; Where is this message from", "example": "autonomy_engine", }, "destination": { "type": "string", "description": "Publisher topic; What is the destination" + " of this message", "example": "ah1", }, "route": { "type": "array", "items": route_clients, "description": "Client-IDs of adapter between forwarding the message between the source adapter and destination adapter", }, "encoded": { "type": "boolean", "description": "Indicate that message raw (encoded) or decoded. " + "Options: encoded=true, decoded=false", "example": False, }, "delivery_type": { "type": "string", "description": "To publish or broadcast this message.", "enum": ["broadcast", "publish"], "example": "publish", "default": "publish", }, }, "oneOf": [ { # semver pattern https://semver.org/ # https://regex101.com/r/Ly7O1x/3/ # + optionally include 'v' prefix # escape backslashes get doubled so use char groups # simplify to planned variants "type": "object", "properties": { "version": { "type": "string", "pattern": "^(v{0,1}(0|[1-9][0-9]*)[.](0|[1-9][0-9]*)[.](0|[1-9][0-9]*)" + "(?:-(alpha|beta)[.](0|[1-9][0-9]*))?)$", } }, "required": ["version"], }, { # commit ref "type": "object", "properties": { "version": { "type": "string", "pattern": "^([0-9a-f]+)$", } }, "required": ["version"], }, { # reserved word "type": "object", "properties": { "version": { "type": "string", "enum": ["dev", "master", "latest"], } }, "required": ["version"], }, { # existing float version "type": "object", "properties": { "version": { "type": "number", "format": "float", "example": 2.0, } }, "required": ["version"], }, ], "required": [ "message_ID", "timestamp", "source", "destination", "delivery_type", "encoded", ], }