diff --git a/docs/usage/configuration.md b/docs/usage/configuration.md index a334baa9..18bad342 100644 --- a/docs/usage/configuration.md +++ b/docs/usage/configuration.md @@ -68,6 +68,7 @@ Parameter Name | Description `requestInterceptor` | `Function=(a => a)`. MUST be a function. Function to intercept remote definition, Try-It-Out, and OAuth2 requests. Accepts one argument requestInterceptor(request) and must return the potentially modified request. `responseInterceptor` |`Function=(a => a)`. MUST be a function. Function to intercept remote definition, Try-It-Out, and OAuth2 responses. Accepts one argument responseInterceptor(response) and must return the potentially modified response. `showMutatedRequest` | `Boolean=true`. If set to `true`, uses the mutated request returned from a requestInterceptor to produce the curl command in the UI, otherwise the request before the requestInterceptor was applied is used. +`supportedSubmitMethods` | `Array=["get", "put", "post", "delete", "options", "head", "patch", "trace"]`. List of HTTP methods that have the Try it out feature enabled. An empty array disables Try it out for all operations. This does not filter the operations from the display. `validatorUrl` | `String="https://online.swagger.io/validator" OR null`. By default, Swagger-UI attempts to validate specs against swagger.io's online validator. You can use this parameter to set a different validator URL, for example for locally deployed validators ([Validator Badge](https://github.com/swagger-api/validator-badge)). Setting it to `null` will disable validation. ##### Macros diff --git a/src/core/containers/OperationContainer.jsx b/src/core/containers/OperationContainer.jsx index 6364365a..ea698c9b 100644 --- a/src/core/containers/OperationContainer.jsx +++ b/src/core/containers/OperationContainer.jsx @@ -56,13 +56,13 @@ export default class OperationContainer extends PureComponent { mapStateToProps(nextState, props) { const { op, layoutSelectors, getConfigs } = props - const { docExpansion, deepLinking, displayOperationId, displayRequestDuration } = getConfigs() + const { docExpansion, deepLinking, displayOperationId, displayRequestDuration, supportedSubmitMethods } = getConfigs() const showSummary = layoutSelectors.showSummary() const operationId = op.getIn(["operation", "operationId"]) || op.getIn(["operation", "__originalOperationId"]) || opId(op.get("operation"), props.path, props.method) || op.get("id") const isShownKey = ["operations", props.tag, operationId] const isDeepLinkingEnabled = deepLinking && deepLinking !== "false" - const allowTryItOut = typeof props.allowTryItOut === "undefined" ? - props.specSelectors.allowTryItOutFor(props.path, props.method) : props.allowTryItOut + const allowTryItOut = supportedSubmitMethods.indexOf(props.method) >= 0 && (typeof props.allowTryItOut === "undefined" ? + props.specSelectors.allowTryItOutFor(props.path, props.method) : props.allowTryItOut) const security = op.getIn(["operation", "security"]) || props.specSelectors.security() return { diff --git a/src/core/index.js b/src/core/index.js index 15f0e798..6ef39f74 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -49,6 +49,16 @@ module.exports = function SwaggerUI(opts) { defaultModelExpandDepth: 1, defaultModelsExpandDepth: 1, showExtensions: false, + supportedSubmitMethods: [ + "get", + "put", + "post", + "delete", + "options", + "head", + "patch", + "trace" + ], // Initial set of plugins ( TODO rename this, or refactor - we don't need presets _and_ plugins. Its just there for performance. // Instead, we can compile the first plugin ( it can be a collection of plugins ), then batch the rest.