text: (window.webpackJsonp=window.webpackJsonp||[]).push([[50],{122:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return s})),n.d(t,"toc",(function(){return p})),n.d(t,"default",(function(){return u}));var a=n(3),r=n(8),l=(n(0),n(127)),b=n(150),i=n(151),c={title:"REST API",id:"api"},s={unversionedId:"reference/api",id:"reference/api",isDocsHomePage:!1,title:"REST API",description:"ORY Oathkeeper is a reverse proxy that checks the HTTP Authorization for",source:"@site/docs/reference/api.mdx",sourceDirName:"reference",slug:"/reference/api",permalink:"/oathkeeper/docs/next/reference/api",editUrl:"https://github.com/ory/oathkeeper/edit/master/docs/docs/reference/api.mdx",version:"current",lastUpdatedBy:"aeneasr",lastUpdatedAt:1615274561,formattedLastUpdatedAt:"3/9/2021",frontMatter:{title:"REST API",id:"api"},sidebar:"docs",previous:{title:"Configuration",permalink:"/oathkeeper/docs/next/reference/configuration"},next:{title:"ORY Oathkeeper SDKs",permalink:"/oathkeeper/docs/next/sdk"}},p=[{value:"api",id:"api",children:[{value:"Lists cryptographic keys",id:"lists-cryptographic-keys",children:[]},{value:"Access Control Decision API",id:"access-control-decision-api",children:[]},{value:"Check alive status",id:"check-alive-status",children:[]},{value:"Check readiness status",id:"check-readiness-status",children:[]},{value:"List all rules",id:"list-all-rules",children:[]},{value:"Retrieve a rule",id:"retrieve-a-rule",children:[]},{value:"Get service version",id:"get-service-version",children:[]}]},{value:"Schemas",id:"schemas",children:[]}],o={toc:p};function u(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},o,n,{components:t,mdxType:"MDXLayout"}),Object(l.b)("p",null,"ORY Oathkeeper is a reverse proxy that checks the HTTP Authorization for\nvalidity against a set of rules. This service uses Hydra to validate access\ntokens and policies."),Object(l.b)("div",{className:"admonition admonition-info alert alert--info"},Object(l.b)("div",{parentName:"div",className:"admonition-heading"},Object(l.b)("h5",{parentName:"div"},Object(l.b)("span",{parentName:"h5",className:"admonition-icon"},Object(l.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},Object(l.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"info")),Object(l.b)("div",{parentName:"div",className:"admonition-content"},Object(l.b)("p",{parentName:"div"},"You are viewing REST API documentation. This documentation is auto-generated\nfrom a swagger specification which itself is generated from annotations in the\nsource code of the project. It is possible that this documentation includes bugs\nand that code samples are incomplete or wrong."),Object(l.b)("p",{parentName:"div"},"If you find issues in the respective documentation, please do not edit the\nMarkdown files directly (as they are generated) but raise an issue on the\nproject's GitHub presence instead. This documentation will improve over time\nwith your help! If you have ideas how to improve this part of the documentation,\nfeel free to share them in a\n",Object(l.b)("a",{parentName:"p",href:"https://github.com/ory/docs/issues/new"},"GitHub issue")," any time."))),Object(l.b)("a",{id:"ory-oathkeeper-api"}),Object(l.b)("h2",{id:"api"},"api"),Object(l.b)("a",{id:"opIdgetWellKnownJSONWebKeys"}),Object(l.b)("h3",{id:"lists-cryptographic-keys"},"Lists cryptographic keys"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /.well-known/jwks.json HTTP/1.1\nAccept: application/json\n\n")),Object(l.b)("p",null,"This endpoint returns cryptographic keys that are required to, for example,\nverify signatures of ID Tokens."),Object(l.b)("h4",{id:"responses"},"Responses"),Object(l.b)("a",{id:"lists-cryptographic-keys-responses"}),Object(l.b)("h5",{id:"overview"},"Overview"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Status"),Object(l.b)("th",{parentName:"tr",align:null},"Meaning"),Object(l.b)("th",{parentName:"tr",align:null},"Description"),Object(l.b)("th",{parentName:"tr",align:null},"Schema"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"200"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.3.1"},"OK")),Object(l.b)("td",{parentName:"tr",align:null},"jsonWebKeySet"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemajsonwebkeyset"},"jsonWebKeySet"))),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"500"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.6.1"},"Internal Server Error")),Object(l.b)("td",{parentName:"tr",align:null},"The standard error format"),Object(l.b)("td",{parentName:"tr",align:null},"Inline")))),Object(l.b)("a",{id:"lists-cryptographic-keys-responseschema"}),Object(l.b)("h5",{id:"response-schema"},"Response Schema"),Object(l.b)("p",null,"Status Code ",Object(l.b)("strong",{parentName:"p"},"500")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb code"),Object(l.b)("td",{parentName:"tr",align:null},"integer(int64)"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb details"),Object(l.b)("td",{parentName:"tr",align:null},"[object]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb message"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb reason"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb request"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb status"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("h5",{id:"examples"},"Examples"),Object(l.b)("h6",{id:"200-response"},"200 response"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "keys": [\n    {\n      "alg": "string",\n      "crv": "string",\n      "d": "string",\n      "dp": "string",\n      "dq": "string",\n      "e": "string",\n      "k": "string",\n      "kid": "string",\n      "kty": "string",\n      "n": "string",\n      "p": "string",\n      "q": "string",\n      "qi": "string",\n      "use": "string",\n      "x": "string",\n      "x5c": ["string"],\n      "y": "string"\n    }\n  ]\n}\n')),Object(l.b)("aside",{class:"success"},"This operation does not require authentication"),Object(l.b)("h4",{id:"code-samples"},"Code samples"),Object(l.b)(b.a,{groupId:"code-samples",defaultValue:"shell",values:[{label:"Shell",value:"shell"},{label:"Go",value:"go"},{label:"Node",value:"node"},{label:"Java",value:"java"},{label:"Python",value:"python"},{label:"Ruby",value:"ruby"}],mdxType:"Tabs"},Object(l.b)(i.a,{value:"shell",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-shell"},"curl -X GET /.well-known/jwks.json \\\n  -H 'Accept: application/json'\n"))),Object(l.b)(i.a,{value:"go",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-go"},'package main\n\nimport (\n    "bytes"\n    "net/http"\n)\n\nfunc main() {\n    headers := map[string][]string{\n        "Accept": []string{"application/json"},\n    }\n\n    var body []byte\n    // body = ...\n\n    req, err := http.NewRequest("GET", "/.well-known/jwks.json", bytes.NewBuffer(body))\n    req.Header = headers\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    // ...\n}\n'))),Object(l.b)(i.a,{value:"node",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-javascript"},"const fetch = require('node-fetch')\n\nconst headers = {\n  Accept: 'application/json'\n}\n\nfetch('/.well-known/jwks.json', {\n  method: 'GET',\n  headers\n})\n  .then((r) => r.json())\n  .then((body) => {\n    console.log(body)\n  })\n"))),Object(l.b)(i.a,{value:"java",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-java"},'// This sample needs improvement.\nURL obj = new URL("/.well-known/jwks.json");\n\nHttpURLConnection con = (HttpURLConnection) obj.openConnection();\ncon.setRequestMethod("GET");\n\nint responseCode = con.getResponseCode();\n\nBufferedReader in = new BufferedReader(\n    new InputStreamReader(con.getInputStream())\n);\n\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile ((inputLine = in.readLine()) != null) {\n    response.append(inputLine);\n}\nin.close();\n\nSystem.out.println(response.toString());\n'))),Object(l.b)(i.a,{value:"python",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-python"},"import requests\n\nheaders = {\n  'Accept': 'application/json'\n}\n\nr = requests.get(\n  '/.well-known/jwks.json',\n  params={},\n  headers = headers)\n\nprint r.json()\n"))),Object(l.b)(i.a,{value:"ruby",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-ruby"},"require 'rest-client'\nrequire 'json'\n\nheaders = {\n  'Accept' => 'application/json'\n}\n\nresult = RestClient.get '/.well-known/jwks.json',\n  params: {}, headers: headers\n\np JSON.parse(result)\n")))),Object(l.b)("a",{id:"opIddecisions"}),Object(l.b)("h3",{id:"access-control-decision-api"},"Access Control Decision API"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /decisions HTTP/1.1\nAccept: application/json\n\n")),Object(l.b)("blockquote",null,Object(l.b)("p",{parentName:"blockquote"},"This endpoint works with all HTTP Methods (GET, POST, PUT, ...) and matches\nevery path prefixed with /decision.")),Object(l.b)("p",null,"This endpoint mirrors the proxy capability of ORY Oathkeeper's proxy\nfunctionality but instead of forwarding the request to the upstream server,\nreturns 200 (request should be allowed), 401 (unauthorized), or 403 (forbidden)\nstatus codes. This endpoint can be used to integrate with other API Proxies like\nAmbassador, Kong, Envoy, and many more."),Object(l.b)("h4",{id:"responses-1"},"Responses"),Object(l.b)("a",{id:"access-control-decision-api-responses"}),Object(l.b)("h5",{id:"overview-1"},"Overview"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Status"),Object(l.b)("th",{parentName:"tr",align:null},"Meaning"),Object(l.b)("th",{parentName:"tr",align:null},"Description"),Object(l.b)("th",{parentName:"tr",align:null},"Schema"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"200"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.3.1"},"OK")),Object(l.b)("td",{parentName:"tr",align:null},"An empty response"),Object(l.b)("td",{parentName:"tr",align:null},"None")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"401"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7235#section-3.1"},"Unauthorized")),Object(l.b)("td",{parentName:"tr",align:null},"The standard error format"),Object(l.b)("td",{parentName:"tr",align:null},"Inline")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"403"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.5.3"},"Forbidden")),Object(l.b)("td",{parentName:"tr",align:null},"The standard error format"),Object(l.b)("td",{parentName:"tr",align:null},"Inline")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"404"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.5.4"},"Not Found")),Object(l.b)("td",{parentName:"tr",align:null},"The standard error format"),Object(l.b)("td",{parentName:"tr",align:null},"Inline")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"500"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.6.1"},"Internal Server Error")),Object(l.b)("td",{parentName:"tr",align:null},"The standard error format"),Object(l.b)("td",{parentName:"tr",align:null},"Inline")))),Object(l.b)("a",{id:"access-control-decision-api-responseschema"}),Object(l.b)("h5",{id:"response-schema-1"},"Response Schema"),Object(l.b)("p",null,"Status Code ",Object(l.b)("strong",{parentName:"p"},"401")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb code"),Object(l.b)("td",{parentName:"tr",align:null},"integer(int64)"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb details"),Object(l.b)("td",{parentName:"tr",align:null},"[object]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb message"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb reason"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb request"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb status"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("p",null,"Status Code ",Object(l.b)("strong",{parentName:"p"},"403")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb code"),Object(l.b)("td",{parentName:"tr",align:null},"integer(int64)"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb details"),Object(l.b)("td",{parentName:"tr",align:null},"[object]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb message"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb reason"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb request"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb status"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("p",null,"Status Code ",Object(l.b)("strong",{parentName:"p"},"404")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb code"),Object(l.b)("td",{parentName:"tr",align:null},"integer(int64)"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb details"),Object(l.b)("td",{parentName:"tr",align:null},"[object]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb message"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb reason"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb request"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb status"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("p",null,"Status Code ",Object(l.b)("strong",{parentName:"p"},"500")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb code"),Object(l.b)("td",{parentName:"tr",align:null},"integer(int64)"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb details"),Object(l.b)("td",{parentName:"tr",align:null},"[object]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb message"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb reason"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb request"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb status"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("h5",{id:"examples-1"},"Examples"),Object(l.b)("h6",{id:"401-response"},"401 response"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "code": 0,\n  "details": [{}],\n  "message": "string",\n  "reason": "string",\n  "request": "string",\n  "status": "string"\n}\n')),Object(l.b)("aside",{class:"success"},"This operation does not require authentication"),Object(l.b)("h4",{id:"code-samples-1"},"Code samples"),Object(l.b)(b.a,{groupId:"code-samples",defaultValue:"shell",values:[{label:"Shell",value:"shell"},{label:"Go",value:"go"},{label:"Node",value:"node"},{label:"Java",value:"java"},{label:"Python",value:"python"},{label:"Ruby",value:"ruby"}],mdxType:"Tabs"},Object(l.b)(i.a,{value:"shell",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-shell"},"curl -X GET /decisions \\\n  -H 'Accept: application/json'\n"))),Object(l.b)(i.a,{value:"go",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-go"},'package main\n\nimport (\n    "bytes"\n    "net/http"\n)\n\nfunc main() {\n    headers := map[string][]string{\n        "Accept": []string{"application/json"},\n    }\n\n    var body []byte\n    // body = ...\n\n    req, err := http.NewRequest("GET", "/decisions", bytes.NewBuffer(body))\n    req.Header = headers\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    // ...\n}\n'))),Object(l.b)(i.a,{value:"node",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-javascript"},"const fetch = require('node-fetch')\n\nconst headers = {\n  Accept: 'application/json'\n}\n\nfetch('/decisions', {\n  method: 'GET',\n  headers\n})\n  .then((r) => r.json())\n  .then((body) => {\n    console.log(body)\n  })\n"))),Object(l.b)(i.a,{value:"java",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-java"},'// This sample needs improvement.\nURL obj = new URL("/decisions");\n\nHttpURLConnection con = (HttpURLConnection) obj.openConnection();\ncon.setRequestMethod("GET");\n\nint responseCode = con.getResponseCode();\n\nBufferedReader in = new BufferedReader(\n    new InputStreamReader(con.getInputStream())\n);\n\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile ((inputLine = in.readLine()) != null) {\n    response.append(inputLine);\n}\nin.close();\n\nSystem.out.println(response.toString());\n'))),Object(l.b)(i.a,{value:"python",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-python"},"import requests\n\nheaders = {\n  'Accept': 'application/json'\n}\n\nr = requests.get(\n  '/decisions',\n  params={},\n  headers = headers)\n\nprint r.json()\n"))),Object(l.b)(i.a,{value:"ruby",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-ruby"},"require 'rest-client'\nrequire 'json'\n\nheaders = {\n  'Accept' => 'application/json'\n}\n\nresult = RestClient.get '/decisions',\n  params: {}, headers: headers\n\np JSON.parse(result)\n")))),Object(l.b)("a",{id:"opIdisInstanceAlive"}),Object(l.b)("h3",{id:"check-alive-status"},"Check alive status"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /health/alive HTTP/1.1\nAccept: application/json\n\n")),Object(l.b)("p",null,"This endpoint returns a 200 status code when the HTTP server is up running. This\nstatus does currently not include checks whether the database connection is\nworking."),Object(l.b)("p",null,"If the service supports TLS Edge Termination, this endpoint does not require the\n",Object(l.b)("inlineCode",{parentName:"p"},"X-Forwarded-Proto")," header to be set."),Object(l.b)("p",null,"Be aware that if you are running multiple nodes of this service, the health\nstatus will never refer to the cluster state, only to a single instance."),Object(l.b)("h4",{id:"responses-2"},"Responses"),Object(l.b)("a",{id:"check-alive-status-responses"}),Object(l.b)("h5",{id:"overview-2"},"Overview"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Status"),Object(l.b)("th",{parentName:"tr",align:null},"Meaning"),Object(l.b)("th",{parentName:"tr",align:null},"Description"),Object(l.b)("th",{parentName:"tr",align:null},"Schema"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"200"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.3.1"},"OK")),Object(l.b)("td",{parentName:"tr",align:null},"healthStatus"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemahealthstatus"},"healthStatus"))),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"500"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.6.1"},"Internal Server Error")),Object(l.b)("td",{parentName:"tr",align:null},"The standard error format"),Object(l.b)("td",{parentName:"tr",align:null},"Inline")))),Object(l.b)("a",{id:"check-alive-status-responseschema"}),Object(l.b)("h5",{id:"response-schema-2"},"Response Schema"),Object(l.b)("p",null,"Status Code ",Object(l.b)("strong",{parentName:"p"},"500")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb code"),Object(l.b)("td",{parentName:"tr",align:null},"integer(int64)"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb details"),Object(l.b)("td",{parentName:"tr",align:null},"[object]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb message"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb reason"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb request"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb status"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("h5",{id:"examples-2"},"Examples"),Object(l.b)("h6",{id:"200-response-1"},"200 response"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "string"\n}\n')),Object(l.b)("aside",{class:"success"},"This operation does not require authentication"),Object(l.b)("h4",{id:"code-samples-2"},"Code samples"),Object(l.b)(b.a,{groupId:"code-samples",defaultValue:"shell",values:[{label:"Shell",value:"shell"},{label:"Go",value:"go"},{label:"Node",value:"node"},{label:"Java",value:"java"},{label:"Python",value:"python"},{label:"Ruby",value:"ruby"}],mdxType:"Tabs"},Object(l.b)(i.a,{value:"shell",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-shell"},"curl -X GET /health/alive \\\n  -H 'Accept: application/json'\n"))),Object(l.b)(i.a,{value:"go",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-go"},'package main\n\nimport (\n    "bytes"\n    "net/http"\n)\n\nfunc main() {\n    headers := map[string][]string{\n        "Accept": []string{"application/json"},\n    }\n\n    var body []byte\n    // body = ...\n\n    req, err := http.NewRequest("GET", "/health/alive", bytes.NewBuffer(body))\n    req.Header = headers\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    // ...\n}\n'))),Object(l.b)(i.a,{value:"node",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-javascript"},"const fetch = require('node-fetch')\n\nconst headers = {\n  Accept: 'application/json'\n}\n\nfetch('/health/alive', {\n  method: 'GET',\n  headers\n})\n  .then((r) => r.json())\n  .then((body) => {\n    console.log(body)\n  })\n"))),Object(l.b)(i.a,{value:"java",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-java"},'// This sample needs improvement.\nURL obj = new URL("/health/alive");\n\nHttpURLConnection con = (HttpURLConnection) obj.openConnection();\ncon.setRequestMethod("GET");\n\nint responseCode = con.getResponseCode();\n\nBufferedReader in = new BufferedReader(\n    new InputStreamReader(con.getInputStream())\n);\n\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile ((inputLine = in.readLine()) != null) {\n    response.append(inputLine);\n}\nin.close();\n\nSystem.out.println(response.toString());\n'))),Object(l.b)(i.a,{value:"python",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-python"},"import requests\n\nheaders = {\n  'Accept': 'application/json'\n}\n\nr = requests.get(\n  '/health/alive',\n  params={},\n  headers = headers)\n\nprint r.json()\n"))),Object(l.b)(i.a,{value:"ruby",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-ruby"},"require 'rest-client'\nrequire 'json'\n\nheaders = {\n  'Accept' => 'application/json'\n}\n\nresult = RestClient.get '/health/alive',\n  params: {}, headers: headers\n\np JSON.parse(result)\n")))),Object(l.b)("a",{id:"opIdisInstanceReady"}),Object(l.b)("h3",{id:"check-readiness-status"},"Check readiness status"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /health/ready HTTP/1.1\nAccept: application/json\n\n")),Object(l.b)("p",null,"This endpoint returns a 200 status code when the HTTP server is up running and\nthe environment dependencies (e.g. the database) are responsive as well."),Object(l.b)("p",null,"If the service supports TLS Edge Termination, this endpoint does not require the\n",Object(l.b)("inlineCode",{parentName:"p"},"X-Forwarded-Proto")," header to be set."),Object(l.b)("p",null,"Be aware that if you are running multiple nodes of this service, the health\nstatus will never refer to the cluster state, only to a single instance."),Object(l.b)("h4",{id:"responses-3"},"Responses"),Object(l.b)("a",{id:"check-readiness-status-responses"}),Object(l.b)("h5",{id:"overview-3"},"Overview"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Status"),Object(l.b)("th",{parentName:"tr",align:null},"Meaning"),Object(l.b)("th",{parentName:"tr",align:null},"Description"),Object(l.b)("th",{parentName:"tr",align:null},"Schema"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"200"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.3.1"},"OK")),Object(l.b)("td",{parentName:"tr",align:null},"healthStatus"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemahealthstatus"},"healthStatus"))),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"503"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.6.4"},"Service Unavailable")),Object(l.b)("td",{parentName:"tr",align:null},"healthNotReadyStatus"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemahealthnotreadystatus"},"healthNotReadyStatus"))))),Object(l.b)("h5",{id:"examples-3"},"Examples"),Object(l.b)("h6",{id:"200-response-2"},"200 response"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "string"\n}\n')),Object(l.b)("aside",{class:"success"},"This operation does not require authentication"),Object(l.b)("h4",{id:"code-samples-3"},"Code samples"),Object(l.b)(b.a,{groupId:"code-samples",defaultValue:"shell",values:[{label:"Shell",value:"shell"},{label:"Go",value:"go"},{label:"Node",value:"node"},{label:"Java",value:"java"},{label:"Python",value:"python"},{label:"Ruby",value:"ruby"}],mdxType:"Tabs"},Object(l.b)(i.a,{value:"shell",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-shell"},"curl -X GET /health/ready \\\n  -H 'Accept: application/json'\n"))),Object(l.b)(i.a,{value:"go",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-go"},'package main\n\nimport (\n    "bytes"\n    "net/http"\n)\n\nfunc main() {\n    headers := map[string][]string{\n        "Accept": []string{"application/json"},\n    }\n\n    var body []byte\n    // body = ...\n\n    req, err := http.NewRequest("GET", "/health/ready", bytes.NewBuffer(body))\n    req.Header = headers\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    // ...\n}\n'))),Object(l.b)(i.a,{value:"node",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-javascript"},"const fetch = require('node-fetch')\n\nconst headers = {\n  Accept: 'application/json'\n}\n\nfetch('/health/ready', {\n  method: 'GET',\n  headers\n})\n  .then((r) => r.json())\n  .then((body) => {\n    console.log(body)\n  })\n"))),Object(l.b)(i.a,{value:"java",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-java"},'// This sample needs improvement.\nURL obj = new URL("/health/ready");\n\nHttpURLConnection con = (HttpURLConnection) obj.openConnection();\ncon.setRequestMethod("GET");\n\nint responseCode = con.getResponseCode();\n\nBufferedReader in = new BufferedReader(\n    new InputStreamReader(con.getInputStream())\n);\n\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile ((inputLine = in.readLine()) != null) {\n    response.append(inputLine);\n}\nin.close();\n\nSystem.out.println(response.toString());\n'))),Object(l.b)(i.a,{value:"python",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-python"},"import requests\n\nheaders = {\n  'Accept': 'application/json'\n}\n\nr = requests.get(\n  '/health/ready',\n  params={},\n  headers = headers)\n\nprint r.json()\n"))),Object(l.b)(i.a,{value:"ruby",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-ruby"},"require 'rest-client'\nrequire 'json'\n\nheaders = {\n  'Accept' => 'application/json'\n}\n\nresult = RestClient.get '/health/ready',\n  params: {}, headers: headers\n\np JSON.parse(result)\n")))),Object(l.b)("a",{id:"opIdlistRules"}),Object(l.b)("h3",{id:"list-all-rules"},"List all rules"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /rules HTTP/1.1\nAccept: application/json\n\n")),Object(l.b)("p",null,"This method returns an array of all rules that are stored in the backend. This\nis useful if you want to get a full view of what rules you have currently in\nplace."),Object(l.b)("a",{id:"list-all-rules-parameters"}),Object(l.b)("h4",{id:"parameters"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Parameter"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"limit"),Object(l.b)("td",{parentName:"tr",align:null},"query"),Object(l.b)("td",{parentName:"tr",align:null},"integer(int64)"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"The maximum amount of rules returned.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"offset"),Object(l.b)("td",{parentName:"tr",align:null},"query"),Object(l.b)("td",{parentName:"tr",align:null},"integer(int64)"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"The offset from where to start looking.")))),Object(l.b)("h4",{id:"responses-4"},"Responses"),Object(l.b)("a",{id:"list-all-rules-responses"}),Object(l.b)("h5",{id:"overview-4"},"Overview"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Status"),Object(l.b)("th",{parentName:"tr",align:null},"Meaning"),Object(l.b)("th",{parentName:"tr",align:null},"Description"),Object(l.b)("th",{parentName:"tr",align:null},"Schema"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"200"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.3.1"},"OK")),Object(l.b)("td",{parentName:"tr",align:null},"A list of rules"),Object(l.b)("td",{parentName:"tr",align:null},"Inline")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"500"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.6.1"},"Internal Server Error")),Object(l.b)("td",{parentName:"tr",align:null},"The standard error format"),Object(l.b)("td",{parentName:"tr",align:null},"Inline")))),Object(l.b)("a",{id:"list-all-rules-responseschema"}),Object(l.b)("h5",{id:"response-schema-3"},"Response Schema"),Object(l.b)("p",null,"Status Code ",Object(l.b)("strong",{parentName:"p"},"200")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("em",{parentName:"td"},"anonymous")),Object(l.b)("td",{parentName:"tr",align:null},"[",Object(l.b)("a",{parentName:"td",href:"#schemarule"},"rule"),"]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb swaggerRule is a single rule that will get checked on every HTTP request."),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemarule"},"rule")),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb authenticators"),Object(l.b)("td",{parentName:"tr",align:null},"[",Object(l.b)("a",{parentName:"td",href:"#schemarulehandler"},"ruleHandler"),"]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Authenticators is a list of authentication handlers that will try and authenticate the provided credentials.",Object(l.b)("br",null),"Authenticators are checked iteratively from index 0 to n and if the first authenticator to return a positive",Object(l.b)("br",null),"result will be the one used.",Object(l.b)("br",null),Object(l.b)("br",null),'If you want the rule to first check a specific authenticator before "falling back" to others, have that authenticator',Object(l.b)("br",null),"as the first item in the array.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb\xbb config"),Object(l.b)("td",{parentName:"tr",align:null},"object"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Config contains the configuration for the handler. Please read the user",Object(l.b)("br",null),"guide for a complete list of each handler's available settings.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb\xbb handler"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Handler identifies the implementation which will be used to handle this specific request. Please read the user",Object(l.b)("br",null),"guide for a complete list of available handlers.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb authorizer"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemarulehandler"},"ruleHandler")),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb description"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Description is a human readable description of this rule.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb id"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"ID is the unique id of the rule. It can be at most 190 characters long, but the layout of the ID is up to you.",Object(l.b)("br",null),"You will need this ID later on to update or delete the rule.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb match"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemarulematch"},"ruleMatch")),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb\xbb methods"),Object(l.b)("td",{parentName:"tr",align:null},"[string]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"An array of HTTP methods (e.g. GET, POST, PUT, DELETE, ...). When ORY Oathkeeper searches for rules",Object(l.b)("br",null),"to decide what to do with an incoming request to the proxy server, it compares the HTTP method of the incoming",Object(l.b)("br",null),"request with the HTTP methods of each rules. If a match is found, the rule is considered a partial match.",Object(l.b)("br",null),"If the matchesUrl field is satisfied as well, the rule is considered a full match.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb\xbb url"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"This field represents the URL pattern this rule matches. When ORY Oathkeeper searches for rules",Object(l.b)("br",null),"to decide what to do with an incoming request to the proxy server, it compares the full request URL",Object(l.b)("br",null),"(e.g. ",Object(l.b)("a",{parentName:"td",href:"https://mydomain.com/api/resource"},"https://mydomain.com/api/resource"),") without query parameters of the incoming",Object(l.b)("br",null),"request with this field. If a match is found, the rule is considered a partial match.",Object(l.b)("br",null),"If the matchesMethods field is satisfied as well, the rule is considered a full match.",Object(l.b)("br",null),Object(l.b)("br",null),"You can use regular expressions in this field to match more than one url. Regular expressions are encapsulated in",Object(l.b)("br",null),"brackets < and >. The following example matches all paths of the domain ",Object(l.b)("inlineCode",{parentName:"td"},"mydomain.com"),": ",Object(l.b)("inlineCode",{parentName:"td"},"https://mydomain.com/<.*>"),".")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb mutators"),Object(l.b)("td",{parentName:"tr",align:null},"[",Object(l.b)("a",{parentName:"td",href:"#schemarulehandler"},"ruleHandler"),"]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Mutators is a list of mutation handlers that transform the HTTP request. A common use case is generating a new set",Object(l.b)("br",null),"of credentials (e.g. JWT) which then will be forwarded to the upstream server.",Object(l.b)("br",null),Object(l.b)("br",null),"Mutations are performed iteratively from index 0 to n and should all succeed in order for the HTTP request to be forwarded.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb upstream"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemaupstream"},"Upstream")),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb\xbb preserve_host"),Object(l.b)("td",{parentName:"tr",align:null},"boolean"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"PreserveHost, if false (the default), tells ORY Oathkeeper to set the upstream request's Host header to the",Object(l.b)("br",null),"hostname of the API's upstream's URL. Setting this flag to true instructs ORY Oathkeeper not to do so.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb\xbb strip_path"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"StripPath if set, replaces the provided path prefix when forwarding the requested URL to the upstream URL.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb\xbb\xbb url"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"URL is the URL the request will be proxied to.")))),Object(l.b)("p",null,"Status Code ",Object(l.b)("strong",{parentName:"p"},"500")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb code"),Object(l.b)("td",{parentName:"tr",align:null},"integer(int64)"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb details"),Object(l.b)("td",{parentName:"tr",align:null},"[object]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb message"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb reason"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb request"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb status"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("h5",{id:"examples-4"},"Examples"),Object(l.b)("h6",{id:"200-response-3"},"200 response"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'[\n  {\n    "authenticators": [\n      {\n        "config": {},\n        "handler": "string"\n      }\n    ],\n    "authorizer": {\n      "config": {},\n      "handler": "string"\n    },\n    "description": "string",\n    "id": "string",\n    "match": {\n      "methods": ["string"],\n      "url": "string"\n    },\n    "mutators": [\n      {\n        "config": {},\n        "handler": "string"\n      }\n    ],\n    "upstream": {\n      "preserve_host": true,\n      "strip_path": "string",\n      "url": "string"\n    }\n  }\n]\n')),Object(l.b)("aside",{class:"success"},"This operation does not require authentication"),Object(l.b)("h4",{id:"code-samples-4"},"Code samples"),Object(l.b)(b.a,{groupId:"code-samples",defaultValue:"shell",values:[{label:"Shell",value:"shell"},{label:"Go",value:"go"},{label:"Node",value:"node"},{label:"Java",value:"java"},{label:"Python",value:"python"},{label:"Ruby",value:"ruby"}],mdxType:"Tabs"},Object(l.b)(i.a,{value:"shell",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-shell"},"curl -X GET /rules \\\n  -H 'Accept: application/json'\n"))),Object(l.b)(i.a,{value:"go",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-go"},'package main\n\nimport (\n    "bytes"\n    "net/http"\n)\n\nfunc main() {\n    headers := map[string][]string{\n        "Accept": []string{"application/json"},\n    }\n\n    var body []byte\n    // body = ...\n\n    req, err := http.NewRequest("GET", "/rules", bytes.NewBuffer(body))\n    req.Header = headers\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    // ...\n}\n'))),Object(l.b)(i.a,{value:"node",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-javascript"},"const fetch = require('node-fetch')\n\nconst headers = {\n  Accept: 'application/json'\n}\n\nfetch('/rules', {\n  method: 'GET',\n  headers\n})\n  .then((r) => r.json())\n  .then((body) => {\n    console.log(body)\n  })\n"))),Object(l.b)(i.a,{value:"java",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-java"},'// This sample needs improvement.\nURL obj = new URL("/rules");\n\nHttpURLConnection con = (HttpURLConnection) obj.openConnection();\ncon.setRequestMethod("GET");\n\nint responseCode = con.getResponseCode();\n\nBufferedReader in = new BufferedReader(\n    new InputStreamReader(con.getInputStream())\n);\n\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile ((inputLine = in.readLine()) != null) {\n    response.append(inputLine);\n}\nin.close();\n\nSystem.out.println(response.toString());\n'))),Object(l.b)(i.a,{value:"python",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-python"},"import requests\n\nheaders = {\n  'Accept': 'application/json'\n}\n\nr = requests.get(\n  '/rules',\n  params={},\n  headers = headers)\n\nprint r.json()\n"))),Object(l.b)(i.a,{value:"ruby",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-ruby"},"require 'rest-client'\nrequire 'json'\n\nheaders = {\n  'Accept' => 'application/json'\n}\n\nresult = RestClient.get '/rules',\n  params: {}, headers: headers\n\np JSON.parse(result)\n")))),Object(l.b)("a",{id:"opIdgetRule"}),Object(l.b)("h3",{id:"retrieve-a-rule"},"Retrieve a rule"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /rules/{id} HTTP/1.1\nAccept: application/json\n\n")),Object(l.b)("p",null,"Use this method to retrieve a rule from the storage. If it does not exist you\nwill receive a 404 error."),Object(l.b)("a",{id:"retrieve-a-rule-parameters"}),Object(l.b)("h4",{id:"parameters-1"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Parameter"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"true"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("h4",{id:"responses-5"},"Responses"),Object(l.b)("a",{id:"retrieve-a-rule-responses"}),Object(l.b)("h5",{id:"overview-5"},"Overview"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Status"),Object(l.b)("th",{parentName:"tr",align:null},"Meaning"),Object(l.b)("th",{parentName:"tr",align:null},"Description"),Object(l.b)("th",{parentName:"tr",align:null},"Schema"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"200"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.3.1"},"OK")),Object(l.b)("td",{parentName:"tr",align:null},"A rule"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemarule"},"rule"))),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"404"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.5.4"},"Not Found")),Object(l.b)("td",{parentName:"tr",align:null},"The standard error format"),Object(l.b)("td",{parentName:"tr",align:null},"Inline")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"500"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.6.1"},"Internal Server Error")),Object(l.b)("td",{parentName:"tr",align:null},"The standard error format"),Object(l.b)("td",{parentName:"tr",align:null},"Inline")))),Object(l.b)("a",{id:"retrieve-a-rule-responseschema"}),Object(l.b)("h5",{id:"response-schema-4"},"Response Schema"),Object(l.b)("p",null,"Status Code ",Object(l.b)("strong",{parentName:"p"},"404")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb code"),Object(l.b)("td",{parentName:"tr",align:null},"integer(int64)"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb details"),Object(l.b)("td",{parentName:"tr",align:null},"[object]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb message"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb reason"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb request"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb status"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("p",null,"Status Code ",Object(l.b)("strong",{parentName:"p"},"500")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb code"),Object(l.b)("td",{parentName:"tr",align:null},"integer(int64)"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb details"),Object(l.b)("td",{parentName:"tr",align:null},"[object]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb message"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb reason"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb request"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb status"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("h5",{id:"examples-5"},"Examples"),Object(l.b)("h6",{id:"200-response-4"},"200 response"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "authenticators": [\n    {\n      "config": {},\n      "handler": "string"\n    }\n  ],\n  "authorizer": {\n    "config": {},\n    "handler": "string"\n  },\n  "description": "string",\n  "id": "string",\n  "match": {\n    "methods": ["string"],\n    "url": "string"\n  },\n  "mutators": [\n    {\n      "config": {},\n      "handler": "string"\n    }\n  ],\n  "upstream": {\n    "preserve_host": true,\n    "strip_path": "string",\n    "url": "string"\n  }\n}\n')),Object(l.b)("aside",{class:"success"},"This operation does not require authentication"),Object(l.b)("h4",{id:"code-samples-5"},"Code samples"),Object(l.b)(b.a,{groupId:"code-samples",defaultValue:"shell",values:[{label:"Shell",value:"shell"},{label:"Go",value:"go"},{label:"Node",value:"node"},{label:"Java",value:"java"},{label:"Python",value:"python"},{label:"Ruby",value:"ruby"}],mdxType:"Tabs"},Object(l.b)(i.a,{value:"shell",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-shell"},"curl -X GET /rules/{id} \\\n  -H 'Accept: application/json'\n"))),Object(l.b)(i.a,{value:"go",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-go"},'package main\n\nimport (\n    "bytes"\n    "net/http"\n)\n\nfunc main() {\n    headers := map[string][]string{\n        "Accept": []string{"application/json"},\n    }\n\n    var body []byte\n    // body = ...\n\n    req, err := http.NewRequest("GET", "/rules/{id}", bytes.NewBuffer(body))\n    req.Header = headers\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    // ...\n}\n'))),Object(l.b)(i.a,{value:"node",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-javascript"},"const fetch = require('node-fetch')\n\nconst headers = {\n  Accept: 'application/json'\n}\n\nfetch('/rules/{id}', {\n  method: 'GET',\n  headers\n})\n  .then((r) => r.json())\n  .then((body) => {\n    console.log(body)\n  })\n"))),Object(l.b)(i.a,{value:"java",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-java"},'// This sample needs improvement.\nURL obj = new URL("/rules/{id}");\n\nHttpURLConnection con = (HttpURLConnection) obj.openConnection();\ncon.setRequestMethod("GET");\n\nint responseCode = con.getResponseCode();\n\nBufferedReader in = new BufferedReader(\n    new InputStreamReader(con.getInputStream())\n);\n\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile ((inputLine = in.readLine()) != null) {\n    response.append(inputLine);\n}\nin.close();\n\nSystem.out.println(response.toString());\n'))),Object(l.b)(i.a,{value:"python",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-python"},"import requests\n\nheaders = {\n  'Accept': 'application/json'\n}\n\nr = requests.get(\n  '/rules/{id}',\n  params={},\n  headers = headers)\n\nprint r.json()\n"))),Object(l.b)(i.a,{value:"ruby",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-ruby"},"require 'rest-client'\nrequire 'json'\n\nheaders = {\n  'Accept' => 'application/json'\n}\n\nresult = RestClient.get '/rules/{id}',\n  params: {}, headers: headers\n\np JSON.parse(result)\n")))),Object(l.b)("a",{id:"opIdgetVersion"}),Object(l.b)("h3",{id:"get-service-version"},"Get service version"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /version HTTP/1.1\nAccept: application/json\n\n")),Object(l.b)("p",null,"This endpoint returns the service version typically notated using semantic\nversioning."),Object(l.b)("p",null,"If the service supports TLS Edge Termination, this endpoint does not require the\n",Object(l.b)("inlineCode",{parentName:"p"},"X-Forwarded-Proto")," header to be set."),Object(l.b)("p",null,"Be aware that if you are running multiple nodes of this service, the health\nstatus will never refer to the cluster state, only to a single instance."),Object(l.b)("h4",{id:"responses-6"},"Responses"),Object(l.b)("a",{id:"get-service-version-responses"}),Object(l.b)("h5",{id:"overview-6"},"Overview"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Status"),Object(l.b)("th",{parentName:"tr",align:null},"Meaning"),Object(l.b)("th",{parentName:"tr",align:null},"Description"),Object(l.b)("th",{parentName:"tr",align:null},"Schema"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"200"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"https://tools.ietf.org/html/rfc7231#section-6.3.1"},"OK")),Object(l.b)("td",{parentName:"tr",align:null},"version"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemaversion"},"version"))))),Object(l.b)("h5",{id:"examples-6"},"Examples"),Object(l.b)("h6",{id:"200-response-5"},"200 response"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "version": "string"\n}\n')),Object(l.b)("aside",{class:"success"},"This operation does not require authentication"),Object(l.b)("h4",{id:"code-samples-6"},"Code samples"),Object(l.b)(b.a,{groupId:"code-samples",defaultValue:"shell",values:[{label:"Shell",value:"shell"},{label:"Go",value:"go"},{label:"Node",value:"node"},{label:"Java",value:"java"},{label:"Python",value:"python"},{label:"Ruby",value:"ruby"}],mdxType:"Tabs"},Object(l.b)(i.a,{value:"shell",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-shell"},"curl -X GET /version \\\n  -H 'Accept: application/json'\n"))),Object(l.b)(i.a,{value:"go",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-go"},'package main\n\nimport (\n    "bytes"\n    "net/http"\n)\n\nfunc main() {\n    headers := map[string][]string{\n        "Accept": []string{"application/json"},\n    }\n\n    var body []byte\n    // body = ...\n\n    req, err := http.NewRequest("GET", "/version", bytes.NewBuffer(body))\n    req.Header = headers\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    // ...\n}\n'))),Object(l.b)(i.a,{value:"node",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-javascript"},"const fetch = require('node-fetch')\n\nconst headers = {\n  Accept: 'application/json'\n}\n\nfetch('/version', {\n  method: 'GET',\n  headers\n})\n  .then((r) => r.json())\n  .then((body) => {\n    console.log(body)\n  })\n"))),Object(l.b)(i.a,{value:"java",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-java"},'// This sample needs improvement.\nURL obj = new URL("/version");\n\nHttpURLConnection con = (HttpURLConnection) obj.openConnection();\ncon.setRequestMethod("GET");\n\nint responseCode = con.getResponseCode();\n\nBufferedReader in = new BufferedReader(\n    new InputStreamReader(con.getInputStream())\n);\n\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile ((inputLine = in.readLine()) != null) {\n    response.append(inputLine);\n}\nin.close();\n\nSystem.out.println(response.toString());\n'))),Object(l.b)(i.a,{value:"python",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-python"},"import requests\n\nheaders = {\n  'Accept': 'application/json'\n}\n\nr = requests.get(\n  '/version',\n  params={},\n  headers = headers)\n\nprint r.json()\n"))),Object(l.b)(i.a,{value:"ruby",mdxType:"TabItem"},Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-ruby"},"require 'rest-client'\nrequire 'json'\n\nheaders = {\n  'Accept' => 'application/json'\n}\n\nresult = RestClient.get '/version',\n  params: {}, headers: headers\n\np JSON.parse(result)\n")))),Object(l.b)("h2",{id:"schemas"},"Schemas"),Object(l.b)("a",{id:"tocSupstream"}),Object(l.b)("h4",{id:"upstream"},"Upstream"),Object(l.b)("a",{id:"schemaupstream"}),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "preserve_host": true,\n  "strip_path": "string",\n  "url": "string"\n}\n')),Object(l.b)("h4",{id:"properties"},"Properties"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"preserve_host"),Object(l.b)("td",{parentName:"tr",align:null},"boolean"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"PreserveHost, if false (the default), tells ORY Oathkeeper to set the upstream request's Host header to the",Object(l.b)("br",null),"hostname of the API's upstream's URL. Setting this flag to true instructs ORY Oathkeeper not to do so.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"strip_path"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"StripPath if set, replaces the provided path prefix when forwarding the requested URL to the upstream URL.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"url"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"URL is the URL the request will be proxied to.")))),Object(l.b)("a",{id:"tocShealthnotreadystatus"}),Object(l.b)("h4",{id:"healthnotreadystatus"},"healthNotReadyStatus"),Object(l.b)("a",{id:"schemahealthnotreadystatus"}),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "errors": {\n    "property1": "string",\n    "property2": "string"\n  }\n}\n')),Object(l.b)("h4",{id:"properties-1"},"Properties"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"errors"),Object(l.b)("td",{parentName:"tr",align:null},"object"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Errors contains a list of errors that caused the not ready status.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"\xbb ",Object(l.b)("strong",{parentName:"td"},"additionalProperties")),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("a",{id:"tocShealthstatus"}),Object(l.b)("h4",{id:"healthstatus"},"healthStatus"),Object(l.b)("a",{id:"schemahealthstatus"}),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "string"\n}\n')),Object(l.b)("h4",{id:"properties-2"},"Properties"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"status"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},'Status always contains "ok".')))),Object(l.b)("a",{id:"tocSjsonwebkey"}),Object(l.b)("h4",{id:"jsonwebkey"},"jsonWebKey"),Object(l.b)("a",{id:"schemajsonwebkey"}),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "alg": "string",\n  "crv": "string",\n  "d": "string",\n  "dp": "string",\n  "dq": "string",\n  "e": "string",\n  "k": "string",\n  "kid": "string",\n  "kty": "string",\n  "n": "string",\n  "p": "string",\n  "q": "string",\n  "qi": "string",\n  "use": "string",\n  "x": "string",\n  "x5c": ["string"],\n  "y": "string"\n}\n')),Object(l.b)("h4",{id:"properties-3"},"Properties"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"alg"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},'The "alg" (algorithm) parameter identifies the algorithm intended for',Object(l.b)("br",null),"use with the key. The values used should either be registered in the",Object(l.b)("br",null),'IANA "JSON Web Signature and Encryption Algorithms" registry',Object(l.b)("br",null),"established by ","[JWA]"," or be a value that contains a Collision-",Object(l.b)("br",null),"Resistant Name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"crv"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"d"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"dp"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"dq"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"e"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"k"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kid"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},'The "kid" (key ID) parameter is used to match a specific key. This',Object(l.b)("br",null),"is used, for instance, to choose among a set of keys within a JWK Set",Object(l.b)("br",null),'during key rollover. The structure of the "kid" value is',Object(l.b)("br",null),'unspecified. When "kid" values are used within a JWK Set, different',Object(l.b)("br",null),'keys within the JWK Set SHOULD use distinct "kid" values. (One',Object(l.b)("br",null),'example in which different keys might use the same "kid" value is if',Object(l.b)("br",null),'they have different "kty" (key type) values but are considered to be',Object(l.b)("br",null),'equivalent alternatives by the application using them.) The "kid"',Object(l.b)("br",null),"value is a case-sensitive string.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kty"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},'The "kty" (key type) parameter identifies the cryptographic algorithm',Object(l.b)("br",null),'family used with the key, such as "RSA" or "EC". "kty" values should',Object(l.b)("br",null),'either be registered in the IANA "JSON Web Key Types" registry',Object(l.b)("br",null),"established by ","[JWA]"," or be a value that contains a Collision-",Object(l.b)("br",null),'Resistant Name. The "kty" value is a case-sensitive string.')),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"n"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"p"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"q"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"qi"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"use"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},'The "use" (public key use) parameter identifies the intended use of',Object(l.b)("br",null),'the public key. The "use" parameter is employed to indicate whether',Object(l.b)("br",null),"a public key is used for encrypting data or verifying the signature",Object(l.b)("br",null),'on data. Values are commonly "sig" (signature) or "enc" (encryption).')),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"x"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"x5c"),Object(l.b)("td",{parentName:"tr",align:null},"[string]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},'The "x5c" (X.509 certificate chain) parameter contains a chain of one',Object(l.b)("br",null),"or more PKIX certificates ","[RFC5280]",". The certificate chain is",Object(l.b)("br",null),"represented as a JSON array of certificate value strings. Each",Object(l.b)("br",null),"string in the array is a base64-encoded (Section 4 of ","[RFC4648]"," --",Object(l.b)("br",null),"not base64url-encoded) DER ","[ITU.X690.1994]"," PKIX certificate value.",Object(l.b)("br",null),"The PKIX certificate containing the key value MUST be the first",Object(l.b)("br",null),"certificate.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"y"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("a",{id:"tocSjsonwebkeyset"}),Object(l.b)("h4",{id:"jsonwebkeyset"},"jsonWebKeySet"),Object(l.b)("a",{id:"schemajsonwebkeyset"}),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "keys": [\n    {\n      "alg": "string",\n      "crv": "string",\n      "d": "string",\n      "dp": "string",\n      "dq": "string",\n      "e": "string",\n      "k": "string",\n      "kid": "string",\n      "kty": "string",\n      "n": "string",\n      "p": "string",\n      "q": "string",\n      "qi": "string",\n      "use": "string",\n      "x": "string",\n      "x5c": ["string"],\n      "y": "string"\n    }\n  ]\n}\n')),Object(l.b)("h4",{id:"properties-4"},"Properties"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"keys"),Object(l.b)("td",{parentName:"tr",align:null},"[",Object(l.b)("a",{parentName:"td",href:"#schemajsonwebkey"},"jsonWebKey"),"]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},'The value of the "keys" parameter is an array of JWK values. By',Object(l.b)("br",null),"default, the order of the JWK values within the array does not imply",Object(l.b)("br",null),"an order of preference among them, although applications of JWK Sets",Object(l.b)("br",null),"can choose to assign a meaning to the order for their purposes, if",Object(l.b)("br",null),"desired.")))),Object(l.b)("a",{id:"tocSrule"}),Object(l.b)("h4",{id:"rule"},"rule"),Object(l.b)("a",{id:"schemarule"}),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "authenticators": [\n    {\n      "config": {},\n      "handler": "string"\n    }\n  ],\n  "authorizer": {\n    "config": {},\n    "handler": "string"\n  },\n  "description": "string",\n  "id": "string",\n  "match": {\n    "methods": ["string"],\n    "url": "string"\n  },\n  "mutators": [\n    {\n      "config": {},\n      "handler": "string"\n    }\n  ],\n  "upstream": {\n    "preserve_host": true,\n    "strip_path": "string",\n    "url": "string"\n  }\n}\n')),Object(l.b)("p",null,Object(l.b)("em",{parentName:"p"},"swaggerRule is a single rule that will get checked on every HTTP request.")),Object(l.b)("h4",{id:"properties-5"},"Properties"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"authenticators"),Object(l.b)("td",{parentName:"tr",align:null},"[",Object(l.b)("a",{parentName:"td",href:"#schemarulehandler"},"ruleHandler"),"]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Authenticators is a list of authentication handlers that will try and authenticate the provided credentials.",Object(l.b)("br",null),"Authenticators are checked iteratively from index 0 to n and if the first authenticator to return a positive",Object(l.b)("br",null),"result will be the one used.",Object(l.b)("br",null),Object(l.b)("br",null),'If you want the rule to first check a specific authenticator before "falling back" to others, have that authenticator',Object(l.b)("br",null),"as the first item in the array.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"authorizer"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemarulehandler"},"ruleHandler")),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Description is a human readable description of this rule.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"ID is the unique id of the rule. It can be at most 190 characters long, but the layout of the ID is up to you.",Object(l.b)("br",null),"You will need this ID later on to update or delete the rule.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"match"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemarulematch"},"ruleMatch")),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"mutators"),Object(l.b)("td",{parentName:"tr",align:null},"[",Object(l.b)("a",{parentName:"td",href:"#schemarulehandler"},"ruleHandler"),"]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Mutators is a list of mutation handlers that transform the HTTP request. A common use case is generating a new set",Object(l.b)("br",null),"of credentials (e.g. JWT) which then will be forwarded to the upstream server.",Object(l.b)("br",null),Object(l.b)("br",null),"Mutations are performed iteratively from index 0 to n and should all succeed in order for the HTTP request to be forwarded.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"upstream"),Object(l.b)("td",{parentName:"tr",align:null},Object(l.b)("a",{parentName:"td",href:"#schemaupstream"},"Upstream")),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"none")))),Object(l.b)("a",{id:"tocSrulehandler"}),Object(l.b)("h4",{id:"rulehandler"},"ruleHandler"),Object(l.b)("a",{id:"schemarulehandler"}),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "config": {},\n  "handler": "string"\n}\n')),Object(l.b)("h4",{id:"properties-6"},"Properties"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"config"),Object(l.b)("td",{parentName:"tr",align:null},"object"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Config contains the configuration for the handler. Please read the user",Object(l.b)("br",null),"guide for a complete list of each handler's available settings.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"handler"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Handler identifies the implementation which will be used to handle this specific request. Please read the user",Object(l.b)("br",null),"guide for a complete list of available handlers.")))),Object(l.b)("a",{id:"tocSrulematch"}),Object(l.b)("h4",{id:"rulematch"},"ruleMatch"),Object(l.b)("a",{id:"schemarulematch"}),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "methods": ["string"],\n  "url": "string"\n}\n')),Object(l.b)("h4",{id:"properties-7"},"Properties"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"methods"),Object(l.b)("td",{parentName:"tr",align:null},"[string]"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"An array of HTTP methods (e.g. GET, POST, PUT, DELETE, ...). When ORY Oathkeeper searches for rules",Object(l.b)("br",null),"to decide what to do with an incoming request to the proxy server, it compares the HTTP method of the incoming",Object(l.b)("br",null),"request with the HTTP methods of each rules. If a match is found, the rule is considered a partial match.",Object(l.b)("br",null),"If the matchesUrl field is satisfied as well, the rule is considered a full match.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"url"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"This field represents the URL pattern this rule matches. When ORY Oathkeeper searches for rules",Object(l.b)("br",null),"to decide what to do with an incoming request to the proxy server, it compares the full request URL",Object(l.b)("br",null),"(e.g. ",Object(l.b)("a",{parentName:"td",href:"https://mydomain.com/api/resource"},"https://mydomain.com/api/resource"),") without query parameters of the incoming",Object(l.b)("br",null),"request with this field. If a match is found, the rule is considered a partial match.",Object(l.b)("br",null),"If the matchesMethods field is satisfied as well, the rule is considered a full match.",Object(l.b)("br",null),Object(l.b)("br",null),"You can use regular expressions in this field to match more than one url. Regular expressions are encapsulated in",Object(l.b)("br",null),"brackets < and >. The following example matches all paths of the domain ",Object(l.b)("inlineCode",{parentName:"td"},"mydomain.com"),": ",Object(l.b)("inlineCode",{parentName:"td"},"https://mydomain.com/<.*>"),".")))),Object(l.b)("a",{id:"tocSversion"}),Object(l.b)("h4",{id:"version"},"version"),Object(l.b)("a",{id:"schemaversion"}),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "version": "string"\n}\n')),Object(l.b)("h4",{id:"properties-8"},"Properties"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Required"),Object(l.b)("th",{parentName:"tr",align:null},"Restrictions"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"version"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"false"),Object(l.b)("td",{parentName:"tr",align:null},"none"),Object(l.b)("td",{parentName:"tr",align:null},"Version is the service's version.")))))}u.isMDXComponent=!0},127:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return m}));var a=n(0),r=n.n(a);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=r.a.createContext({}),p=function(e){var t=r.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},o=function(e){var t=p(e.components);return r.a.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,b=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),o=p(n),d=a,m=o["".concat(b,".").concat(d)]||o[d]||u[d]||l;return n?r.a.createElement(m,i(i({ref:t},s),{},{components:n})):r.a.createElement(m,i({ref:t},s))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,b=new Array(l);b[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:a,b[1]=i;for(var s=2;s<l;s++)b[s]=n[s];return r.a.createElement.apply(null,b)}return r.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},129:function(e,t,n){"use strict";function a(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=a(e[t]))&&(r&&(r+=" "),r+=n);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}t.a=function(){for(var e,t,n=0,r="";n<arguments.length;)(e=arguments[n++])&&(t=a(e))&&(r&&(r+=" "),r+=t);return r}},136:function(e,t,n){"use strict";var a=n(0),r=n(137);t.a=function(){var e=Object(a.useContext)(r.a);if(null==e)throw new Error("`useUserPreferencesContext` is used outside of `Layout` Component.");return e}},137:function(e,t,n){"use strict";var a=n(0),r=Object(a.createContext)(void 0);t.a=r},150:function(e,t,n){"use strict";var a=n(0),r=n.n(a),l=n(136),b=n(129),i=n(57),c=n.n(i);var s=37,p=39;t.a=function(e){var t=e.lazy,n=e.block,i=e.defaultValue,o=e.values,u=e.groupId,d=e.className,m=Object(l.a)(),j=m.tabGroupChoices,O=m.setTabGroupChoices,g=Object(a.useState)(i),h=g[0],N=g[1],f=a.Children.toArray(e.children),y=[];if(null!=u){var v=j[u];null!=v&&v!==h&&o.some((function(e){return e.value===v}))&&N(v)}var T=function(e){var t=e.currentTarget,n=y.indexOf(t),a=o[n].value;N(a),null!=u&&(O(u,a),setTimeout((function(){var e,n,a,r,l,b,i,s;(e=t.getBoundingClientRect(),n=e.top,a=e.left,r=e.bottom,l=e.right,b=window,i=b.innerHeight,s=b.innerWidth,n>=0&&l<=s&&r<=i&&a>=0)||(t.scrollIntoView({block:"center",behavior:"smooth"}),t.classList.add(c.a.tabItemActive),setTimeout((function(){return t.classList.remove(c.a.tabItemActive)}),2e3))}),150))},w=function(e){var t,n;switch(e.keyCode){case p:var a=y.indexOf(e.target)+1;n=y[a]||y[0];break;case s:var r=y.indexOf(e.target)-1;n=y[r]||y[y.length-1]}null===(t=n)||void 0===t||t.focus()};return r.a.createElement("div",{className:"tabs-container"},r.a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:Object(b.a)("tabs",{"tabs--block":n},d)},o.map((function(e){var t=e.value,n=e.label;return r.a.createElement("li",{role:"tab",tabIndex:h===t?0:-1,"aria-selected":h===t,className:Object(b.a)("tabs__item",c.a.tabItem,{"tabs__item--active":h===t}),key:t,ref:function(e){return y.push(e)},onKeyDown:w,onFocus:T,onClick:T},n)}))),t?Object(a.cloneElement)(f.filter((function(e){return e.props.value===h}))[0],{className:"margin-vert--md"}):r.a.createElement("div",{className:"margin-vert--md"},f.map((function(e,t){return Object(a.cloneElement)(e,{key:t,hidden:e.props.value!==h})}))))}},151:function(e,t,n){"use strict";var a=n(0),r=n.n(a);t.a=function(e){var t=e.children,n=e.hidden,a=e.className;return r.a.createElement("div",{role:"tabpanel",hidden:n,className:a},t)}}}]);