{
  "title": "FutoIn request schema",
  "type": "object",
  "required": [
    "f"
  ],
  "additionalProperties": false,
  "properties": {
    "f": {
      "type": "string",
      "pattern": "^([a-z][a-z0-9]*)(\\.[a-z][a-z0-9]*)*:[0-9]+\\.[0-9]+:(([a-z][a-zA-Z0-9]*)|([A-Z]([A-Z0-9_]*[A-Z0-9])?))$",
      "description": "Unique interface identifier, version and function identifier"
    },
    "p": {
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
        "^[a-z][a-z0-9_]*$": {}
      },
      "description": "Parameters key-value pairs"
    },
    "rid": {
      "type": "string",
      "pattern": "^(C|S|E)[a-zA-Z0-9_\\-]+$",
      "description": "Optional request ID for multiplexing"
    },
    "forcersp": {
      "type": "boolean",
      "description": "If present and true, force response to be sent, even if no result is expected"
    },
    "sec": {
      "type": "object",
      "description": "Security-defined extension"
    },
    "obf": {
      "type": "object",
      "description": "On-Behalf-oF user info",
      "additionalProperties": true,
      "properties": {
        "lid": {
          "type": "string",
          "description": "Local User ID"
        },
        "gid": {
          "type": "string",
          "description": "Global User ID"
        },
        "slvl": {
          "type": "string",
          "description": "User authentication security level"
        },
        "token": {
          "type": "string",
          "description": "Original user token"
        },
        "trace_id": {
          "type": "string",
          "description": "Associated tracing ID"
        }
      }
    }
  }
}