{
  "$schema": "../meta-schema.json",
  "openrpcExtension": "0.0.0-development",
  "name": "x-transport",
  "version": "0.0.1",
  "description": "Describe a transport for OpenRPC",
  "summary": "OpenRPC Transports",
  "externalDocumentation": {
    "description": "github",
    "url": "https://github.com/open-rpc/specification-extensions-spec/examples/x-transport-openrpc-ext.json"
  },
  "required": true,
  "restricted": ["serverObject"],
  "schema": {
    "oneOf": [
      {
        "type": "object",
        "title": "HTTP Transport",
        "description": "HTTP Transport",
        "required": ["name"],
        "properties": {
          "name": {
            "type": "string",
            "const": "HTTPTransport"
          },
          "options": {
            "type": "object",
            "properties": {
              "headers": {
                "patternProperties": {
                  "": {
                    "type": "string"
                  }
                }
              },
              "credentials": {
                "type": "string",
                "enum": ["omit", "same-origin", "include"]
              }
            }
          }
        },
        "examples": [
          {
            "x-transport": {
              "name": "HTTPTransport",
              "options": {
                "headers": {
                  "Bearer": "string"
                }
              }
            }
          }
        ]
      },
      {
        "type": "object",
        "title": "PostMessageWindow Transport",
        "description": "Post Message Window Transport",
        "required": ["name"],
        "properties": {
          "name": {
            "type": "string",
            "const": "PostMessageWindow"
          },
          "options": {
            "type": "object",
            "properties": {
              "top": {
                "type": "integer",
                "title": "top",
                "description": "top"
              },
              "left": {
                "type": "integer",
                "title": "left",
                "description": "left"
              },
              "height": {
                "type": "integer",
                "title": "height",
                "description": "height"
              },
              "width": {
                "type": "integer",
                "title": "width",
                "description": "width"
              }
            }
          }
        }
      }
    ]
  }
}
