openapi-directory
Version:
Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS
1 lines • 13.8 kB
JSON
{"openapi":"3.0.0","info":{"contact":{"name":"darklynx","url":"https://github.com/darklynx"},"description":"RESTful API of [Request Baskets](https://rbaskets.in) service.\n\nRequest Baskets is an open source project of a service to collect HTTP requests and inspect them via RESTful\nAPI or web UI.\n\nCheck out the [project page](https://github.com/darklynx/request-baskets) for more detailed description.\n","license":{"name":"MIT","url":"https://github.com/darklynx/request-baskets/blob/master/LICENSE"},"title":"Request Baskets","version":"0.8","x-apisguru-categories":["developer_tools","monitoring"],"x-logo":{"url":"https://raw.githubusercontent.com/darklynx/request-baskets/master/doc/logo.svg"},"x-origin":[{"format":"swagger","url":"https://raw.githubusercontent.com/darklynx/request-baskets/master/doc/api-swagger.yaml","version":"2.0"}],"x-providerName":"rbaskets.in"},"tags":[{"description":"Manage baskets","name":"baskets"},{"description":"Configure basket responses","name":"responses"},{"description":"Manage collected requests","name":"requests"}],"paths":{"/baskets":{"get":{"description":"Fetches a list of basket names managed by service. Require master token.","parameters":[{"description":"Maximum number of basket names to return; default 20","in":"query","name":"max","required":false,"schema":{"type":"integer"}},{"description":"Number of basket names to skip; default 0","in":"query","name":"skip","required":false,"schema":{"type":"integer"}},{"description":"Query string to filter result, only those basket names that match the query will be included in response","in":"query","name":"q","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK. Returns list of available baskets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Baskets"}}}},"204":{"description":"No Content. No baskets available for specified limits"},"401":{"description":"Unauthorized. Invalid or missing master token"}},"security":[{"basket_token":[]}],"summary":"Get baskets","tags":["baskets"]}},"/baskets/{name}":{"delete":{"description":"Permanently deletes this basket and all collected requests.","parameters":[{"description":"The basket name","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content. Basket is deleted"},"401":{"description":"Unauthorized. Invalid or missing basket token"},"404":{"description":"Not Found. No basket with such name"}},"security":[{"basket_token":[]}],"summary":"Delete basket","tags":["baskets"]},"get":{"description":"Retrieves configuration settings of this basket.","parameters":[{"description":"The basket name","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK. Returns basket configuration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Config"}}}},"401":{"description":"Unauthorized. Invalid or missing basket token"},"404":{"description":"Not Found. No basket with such name"}},"security":[{"basket_token":[]}],"summary":"Get basket settings","tags":["baskets"]},"post":{"description":"Creates a new basket with this name.","parameters":[{"description":"The name of new basket","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Config"}}},"description":"Basket configuration"},"responses":{"201":{"description":"Created. Indicates that basket is successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"400":{"description":"Bad Request. Failed to parse JSON into basket configuration object."},"403":{"description":"Forbidden. Indicates that basket name conflicts with reserved paths; e.g. `baskets`, `web`, etc."},"409":{"description":"Conflict. Indicates that basket with such name already exists"},"422":{"description":"Unprocessable Entity. Basket configuration is not valid."}},"summary":"Create new basket","tags":["baskets"]},"put":{"description":"Updates configuration settings of this basket.\n\nSpecial configuration parameters for request forwarding:\n * `insecure_tls` controls certificate verification when forwarding requests. Setting this parameter to `true`\n allows to forward collected HTTP requests via HTTPS protocol even if the forward end-point is configured with\n self-signed TLS/SSL certificate. **Warning:** enabling this feature has known security implications.\n * `expand_path` changes the logic of constructing taget URL when forwarding requests. If this parameter is\n set to `true` the forward URL path will be expanded when original HTTP request contains compound path. For\n example, a basket with name **server1** is configured to forward all requests to `http://server1.intranet:8001/myservice`\n and it has received an HTTP request like `GET http://baskets.example.com/server1/component/123/events?status=OK`\n then depending on `expand_path` settings the request will be forwarded to:\n * `true` => `GET http://server1.intranet:8001/myservice/component/123/events?status=OK`\n * `false` => `GET http://server1.intranet:8001/myservice?status=OK`\n","parameters":[{"description":"The basket name","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Config"}}},"description":"New configuration to apply","required":true},"responses":{"204":{"description":"No Content. Basket configuration is updated"},"400":{"description":"Bad Request. Failed to parse JSON into basket configuration object."},"401":{"description":"Unauthorized. Invalid or missing basket token"},"404":{"description":"Not Found. No basket with such name"},"422":{"description":"Unprocessable Entity. Basket configuration is not valid."}},"security":[{"basket_token":[]}],"summary":"Update basket settings","tags":["baskets"]}},"/baskets/{name}/requests":{"delete":{"description":"Deletes all requests collected by this basket.","parameters":[{"description":"The basket name","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content. Basket requests are cleared"},"401":{"description":"Unauthorized. Invalid or missing basket token"},"404":{"description":"Not Found. No basket with such name"}},"security":[{"basket_token":[]}],"summary":"Delete all requests","tags":["requests"]},"get":{"description":"Fetches collection of requests collected by this basket.","parameters":[{"description":"The basket name","in":"path","name":"name","required":true,"schema":{"type":"string"}},{"description":"Maximum number of requests to return; default 20","in":"query","name":"max","required":false,"schema":{"type":"integer"}},{"description":"Number of requests to skip; default 0","in":"query","name":"skip","required":false,"schema":{"type":"integer"}},{"description":"Query string to filter result, only requests that match the query will be included in response","in":"query","name":"q","required":false,"schema":{"type":"string"}},{"description":"Defines what is taken into account when filtering is applied: `body` - search in content body of collected requests,\n`query` - search among query parameters of collected requests, `headers` - search among request header values,\n`any` - search anywhere; default `any`\n","in":"query","name":"in","required":false,"schema":{"type":"string","enum":["any","body","query","headers"]}}],"responses":{"200":{"description":"OK. Returns list of basket requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Requests"}}}},"204":{"description":"No Content. No requests found for specified limits"},"401":{"description":"Unauthorized. Invalid or missing basket token"},"404":{"description":"Not Found. No basket with such name"}},"security":[{"basket_token":[]}],"summary":"Get collected requests","tags":["requests"]}},"/baskets/{name}/responses/{method}":{"get":{"description":"Retrieves information about configured response of the basket. Service will reply with this response to any\nHTTP request sent to the basket with appropriate HTTP method.\n\nIf nothing is configured, the default response is HTTP 200 - OK with empty content.\n","parameters":[{"description":"The basket name","in":"path","name":"name","required":true,"schema":{"type":"string"}},{"description":"The HTTP method this response is configured for","in":"path","name":"method","required":true,"schema":{"type":"string","enum":["GET","HEAD","POST","PUT","PATCH","DELETE","CONNECT","OPTIONS","TRACE"]}}],"responses":{"200":{"description":"OK. Returns configured response information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized. Invalid or missing basket token"},"404":{"description":"Not Found. No basket with such name"}},"security":[{"basket_token":[]}],"summary":"Get response settings","tags":["responses"]},"put":{"description":"Allows to configure HTTP response of this basket. The service will reply with configured response to any HTTP\nrequest sent to the basket with appropriate HTTP method.\n\nIf nothing is configured, the default response is HTTP 200 - OK with empty content.\n","parameters":[{"description":"The basket name","in":"path","name":"name","required":true,"schema":{"type":"string"}},{"description":"The HTTP method this response is configured for","in":"path","name":"method","required":true,"schema":{"type":"string","enum":["GET","HEAD","POST","PUT","PATCH","DELETE","CONNECT","OPTIONS","TRACE"]}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}},"description":"HTTP response configuration","required":true},"responses":{"204":{"description":"No Content. Response configuration is updated"},"400":{"description":"Bad Request. Failed to parse JSON into response configuration object."},"401":{"description":"Unauthorized. Invalid or missing basket token"},"404":{"description":"Not Found. No basket with such name"},"422":{"description":"Unprocessable Entity. Response configuration is not valid."}},"security":[{"basket_token":[]}],"summary":"Update response settings","tags":["responses"]}}},"servers":[{"url":"https://rbaskets.in/"}],"components":{"securitySchemes":{"basket_token":{"description":"Basket assigned secure token","in":"header","name":"Authorization","type":"apiKey"}},"schemas":{"Baskets":{"properties":{"count":{"description":"Total number of baskets in the system; not present if query is applied","type":"integer"},"has_more":{"description":"Indicates if there are more baskets to fetch","type":"boolean"},"names":{"description":"Collection of basket names","items":{"type":"string"},"type":"array"}},"required":["names","has_more"],"type":"object"},"Config":{"properties":{"capacity":{"description":"Baskets capacity, defines maximum number of requests to store","type":"integer"},"expand_path":{"description":"If set to `true` the forward URL path will be expanded when original HTTP request contains compound path.","type":"boolean"},"forward_url":{"description":"URL to forward all incoming requests of the basket, `empty` value disables forwarding","type":"string"},"insecure_tls":{"description":"If set to `true` the certificate verification will be disabled if forward URL indicates HTTPS scheme.\n**Warning:** enabling this feature has known security implications.\n","type":"boolean"},"proxy_response":{"description":"If set to `true` this basket behaves as a full proxy: responses from underlying service configured in `forward_url`\nare passed back to clients of original requests. The configuration of basket responses is ignored in this case.\n","type":"boolean"}},"type":"object"},"Headers":{"additionalProperties":{"description":"Collection of header values","items":{"type":"string"},"type":"array"},"description":"Map of HTTP headers, key represents name, value is array of values","type":"object"},"Request":{"properties":{"body":{"description":"Content of request body","type":"string"},"content_length":{"description":"Content lenght of request","type":"integer"},"date":{"description":"Date and time of request in Unix time ms. format (number of miliseconds elapsed since January 1, 1970 UTC)","format":"int64","type":"integer"},"headers":{"$ref":"#/components/schemas/Headers"},"method":{"description":"HTTP methof of request","type":"string"},"path":{"description":"URL path of request","type":"string"},"query":{"description":"Query parameters of request","type":"string"}},"type":"object"},"Requests":{"properties":{"count":{"description":"Current number of collected requests hold by basket; not present if query is applied","type":"integer"},"has_more":{"description":"Indicates if there are more requests collected by basket to fetch","type":"boolean"},"requests":{"description":"Collection of collected requests","items":{"$ref":"#/components/schemas/Request"},"type":"array"},"total_count":{"description":"Total number of all requests passed through this basket; not present if query is applied","type":"integer"}},"required":["requests","has_more"],"type":"object"},"Response":{"properties":{"body":{"description":"Content of response body","type":"string"},"headers":{"$ref":"#/components/schemas/Headers"},"is_template":{"description":"If set to `true` the body is treated as [HTML template](https://golang.org/pkg/html/template) that accepts\ninput from request parameters.\n","type":"boolean"},"status":{"description":"The HTTP status code to reply with","type":"integer"}},"type":"object"},"Token":{"properties":{"token":{"description":"Secure token to manage the basket, generated by system","type":"string"}},"required":["token"],"type":"object"}}}}