{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://json.schemastore.org/ocelot.json",
  "properties": {
    "Routes": {
      "$id": "#/properties/Routes",
      "type": "array",
      "title": "The Routes Schema",
      "items": {
        "$id": "#/properties/Routes/items",
        "type": "object",
        "title": "The Items Schema",
        "properties": {
          "DownstreamPathTemplate": {
            "$id": "#/properties/Routes/items/properties/DownstreamPathTemplate",
            "type": "string",
            "title": "The Downstreampathtemplate Schema",
            "pattern": "^(.*)$"
          },
          "UpstreamPathTemplate": {
            "$id": "#/properties/Routes/items/properties/UpstreamPathTemplate",
            "type": "string",
            "title": "The Upstreampathtemplate Schema",
            "pattern": "^(.*)$"
          },
          "UpstreamHttpMethod": {
            "$id": "#/properties/Routes/items/properties/UpstreamHttpMethod",
            "type": "array",
            "title": "The Upstreamhttpmethod Schema",
            "items": {
              "$id": "#/properties/Routes/items/properties/UpstreamHttpMethod/items",
              "type": "string",
              "title": "The Items Schema",
              "examples": ["Get"],
              "pattern": "^(.*)$"
            }
          },
          "AddHeadersToRequest": {
            "$id": "#/properties/Routes/items/properties/AddHeadersToRequest",
            "type": "object",
            "title": "The AddHeadersToRequest Schema"
          },
          "AddClaimsToRequest": {
            "$id": "#/properties/Routes/items/properties/AddClaimsToRequest",
            "type": "object",
            "title": "The AddClaimsToRequest Schema"
          },
          "RouteClaimsRequirement": {
            "$id": "#/properties/Routes/items/properties/RouteClaimsRequirement",
            "type": "object",
            "title": "The Routeclaimsrequirement Schema"
          },
          "AddQueriesToRequest": {
            "$id": "#/properties/Routes/items/properties/AddQueriesToRequest",
            "type": "object",
            "title": "The AddQueriesToRequest Schema"
          },
          "RequestIdKey": {
            "$id": "#/properties/Routes/items/properties/RequestIdKey",
            "type": "string",
            "title": "The Requestidkey Schema",
            "pattern": "^(.*)$"
          },
          "FileCacheOptions": {
            "$id": "#/properties/Routes/items/properties/FileCacheOptions",
            "type": "object",
            "title": "The Filecacheoptions Schema",
            "properties": {
              "TtlSeconds": {
                "$id": "#/properties/Routes/items/properties/FileCacheOptions/properties/TtlSeconds",
                "type": "integer",
                "title": "The Ttlseconds Schema"
              },
              "Region": {
                "$id": "#/properties/Routes/items/properties/FileCacheOptions/properties/Region",
                "type": "string",
                "title": "The Region Schema",
                "pattern": "^(.*)$"
              }
            }
          },
          "RouteIsCaseSensitive": {
            "$id": "#/properties/Routes/items/properties/RouteIsCaseSensitive",
            "type": "boolean",
            "title": "The Routeiscasesensitive Schema"
          },
          "ServiceName": {
            "$id": "#/properties/Routes/items/properties/ServiceName",
            "type": "string",
            "title": "The Servicename Schema",
            "pattern": "^(.*)$"
          },
          "DownstreamScheme": {
            "$id": "#/properties/Routes/items/properties/DownstreamScheme",
            "type": "string",
            "title": "The Downstreamscheme Schema",
            "pattern": "^(.*)$"
          },
          "DownstreamHostAndPorts": {
            "$id": "#/properties/Routes/items/properties/DownstreamHostAndPorts",
            "type": "array",
            "title": "The Downstreamhostandports Schema",
            "items": {
              "$id": "#/properties/Routes/items/properties/DownstreamHostAndPorts/items",
              "type": "object",
              "title": "The Items Schema",
              "properties": {
                "Host": {
                  "$id": "#/properties/Routes/items/properties/DownstreamHostAndPorts/items/properties/Host",
                  "type": "string",
                  "title": "The Host Schema",
                  "default": "",
                  "examples": ["localhost"],
                  "pattern": "^(.*)$"
                },
                "Port": {
                  "$id": "#/properties/Routes/items/properties/DownstreamHostAndPorts/items/properties/Port",
                  "type": "integer",
                  "title": "The Port Schema"
                }
              }
            }
          },
          "QoSOptions": {
            "$id": "#/properties/Routes/items/properties/QoSOptions",
            "type": "object",
            "title": "The Qosoptions Schema",
            "properties": {
              "ExceptionsAllowedBeforeBreaking": {
                "$id": "#/properties/Routes/items/properties/QoSOptions/properties/ExceptionsAllowedBeforeBreaking",
                "type": "integer",
                "title": "The Exceptionsallowedbeforebreaking Schema"
              },
              "DurationOfBreak": {
                "$id": "#/properties/Routes/items/properties/QoSOptions/properties/DurationOfBreak",
                "type": "integer",
                "title": "The Durationofbreak Schema"
              },
              "TimeoutValue": {
                "$id": "#/properties/Routes/items/properties/QoSOptions/properties/TimeoutValue",
                "type": "integer",
                "title": "The Timeoutvalue Schema"
              }
            }
          },
          "LoadBalancer": {
            "$id": "#/properties/Routes/items/properties/LoadBalancer",
            "type": "string",
            "title": "The Loadbalancer Schema",
            "pattern": "^(.*)$"
          },
          "RateLimitOptions": {
            "$id": "#/properties/Routes/items/properties/RateLimitOptions",
            "type": "object",
            "title": "The Ratelimitoptions Schema",
            "properties": {
              "ClientWhitelist": {
                "$id": "#/properties/Routes/items/properties/RateLimitOptions/properties/ClientWhitelist",
                "type": "array",
                "title": "The Clientwhitelist Schema"
              },
              "EnableRateLimiting": {
                "$id": "#/properties/Routes/items/properties/RateLimitOptions/properties/EnableRateLimiting",
                "type": "boolean",
                "title": "The Enableratelimiting Schema"
              },
              "Period": {
                "$id": "#/properties/Routes/items/properties/RateLimitOptions/properties/Period",
                "type": "string",
                "title": "The Period Schema",
                "pattern": "^(.*)$"
              },
              "PeriodTimespan": {
                "$id": "#/properties/Routes/items/properties/RateLimitOptions/properties/PeriodTimespan",
                "type": "integer",
                "title": "The Periodtimespan Schema"
              },
              "Limit": {
                "$id": "#/properties/Routes/items/properties/RateLimitOptions/properties/Limit",
                "type": "integer",
                "title": "The Limit Schema"
              }
            }
          },
          "AuthenticationOptions": {
            "$id": "#/properties/Routes/items/properties/AuthenticationOptions",
            "type": "object",
            "title": "The Authenticationoptions Schema",
            "properties": {
              "AuthenticationProviderKey": {
                "$id": "#/properties/Routes/items/properties/AuthenticationOptions/properties/AuthenticationProviderKey",
                "type": "string",
                "title": "The Authenticationproviderkey Schema",
                "pattern": "^(.*)$"
              },
              "AllowedScopes": {
                "$id": "#/properties/Routes/items/properties/AuthenticationOptions/properties/AllowedScopes",
                "type": "array",
                "title": "The Allowedscopes Schema"
              }
            }
          },
          "HttpHandlerOptions": {
            "$id": "#/properties/Routes/items/properties/HttpHandlerOptions",
            "type": "object",
            "title": "The Httphandleroptions Schema",
            "properties": {
              "AllowAutoRedirect": {
                "$id": "#/properties/Routes/items/properties/HttpHandlerOptions/properties/AllowAutoRedirect",
                "type": "boolean",
                "title": "The Allowautoredirect Schema"
              },
              "UseCookieContainer": {
                "$id": "#/properties/Routes/items/properties/HttpHandlerOptions/properties/UseCookieContainer",
                "type": "boolean",
                "title": "The Usecookiecontainer Schema"
              },
              "UseTracing": {
                "$id": "#/properties/Routes/items/properties/HttpHandlerOptions/properties/UseTracing",
                "type": "boolean",
                "title": "The Usetracing Schema"
              }
            }
          },
          "DangerousAcceptAnyServerCertificateValidator": {
            "$id": "#/properties/Routes/items/properties/DangerousAcceptAnyServerCertificateValidator",
            "type": "boolean",
            "title": "The Dangerousacceptanyservercertificatevalidator Schema"
          }
        }
      }
    },
    "GlobalConfiguration": {
      "$id": "#/properties/GlobalConfiguration",
      "type": "object",
      "title": "The Globalconfiguration Schema",
      "properties": {
        "RequestIdKey": {
          "$id": "#/properties/GlobalConfiguration/properties/RequestIdKey",
          "type": "string",
          "title": "The Requestidkey Schema",
          "pattern": "^(.*)$"
        }
      }
    }
  },
  "required": ["Routes"],
  "title": "JSON Schema for Ocelot.json",
  "type": "object"
}
