diff --git a/src/core/components/array-model.jsx b/src/core/components/array-model.jsx index 7b6f0d72..44730ab8 100644 --- a/src/core/components/array-model.jsx +++ b/src/core/components/array-model.jsx @@ -15,7 +15,9 @@ export default class ArrayModel extends Component { required: PropTypes.bool, expandDepth: PropTypes.number, specPath: ImPropTypes.list.isRequired, - depth: PropTypes.number + depth: PropTypes.number, + includeReadOnly: PropTypes.bool, + includeWriteOnly: PropTypes.bool, } render(){ diff --git a/src/core/components/model-example.jsx b/src/core/components/model-example.jsx index 379b01b8..b7498ebd 100644 --- a/src/core/components/model-example.jsx +++ b/src/core/components/model-example.jsx @@ -11,6 +11,8 @@ export default class ModelExample extends React.Component { isExecute: PropTypes.bool, getConfigs: PropTypes.func.isRequired, specPath: ImPropTypes.list.isRequired, + includeReadOnly: PropTypes.bool, + includeWriteOnly: PropTypes.bool, } constructor(props, context) { @@ -52,7 +54,7 @@ export default class ModelExample extends React.Component { } render() { - let { getComponent, specSelectors, schema, example, isExecute, getConfigs, specPath } = this.props + let { getComponent, specSelectors, schema, example, isExecute, getConfigs, specPath, includeReadOnly, includeWriteOnly } = this.props let { defaultModelExpandDepth } = getConfigs() const ModelWrapper = getComponent("ModelWrapper") const HighlightCode = getComponent("highlightCode") @@ -84,7 +86,9 @@ export default class ModelExample extends React.Component { getConfigs={ getConfigs } specSelectors={ specSelectors } expandDepth={ defaultModelExpandDepth } - specPath={specPath} /> + specPath={specPath} + includeReadOnly = {includeReadOnly} + includeWriteOnly = {includeWriteOnly}/> } diff --git a/src/core/components/model-wrapper.jsx b/src/core/components/model-wrapper.jsx index f48960ce..8859ac42 100644 --- a/src/core/components/model-wrapper.jsx +++ b/src/core/components/model-wrapper.jsx @@ -15,7 +15,9 @@ export default class ModelWrapper extends Component { specSelectors: PropTypes.object.isRequired, expandDepth: PropTypes.number, layoutActions: PropTypes.object, - layoutSelectors: PropTypes.object.isRequired + layoutSelectors: PropTypes.object.isRequired, + includeReadOnly: PropTypes.bool, + includeWriteOnly: PropTypes.bool, } getSchemaBasePath = () => { diff --git a/src/core/components/model.jsx b/src/core/components/model.jsx index fa676ef1..e72edbd6 100644 --- a/src/core/components/model.jsx +++ b/src/core/components/model.jsx @@ -16,6 +16,8 @@ export default class Model extends ImmutablePureComponent { expandDepth: PropTypes.number, depth: PropTypes.number, specPath: ImPropTypes.list.isRequired, + includeReadOnly: PropTypes.bool, + includeWriteOnly: PropTypes.bool, } getModelName =( ref )=> { @@ -34,7 +36,8 @@ export default class Model extends ImmutablePureComponent { } render () { - let { getComponent, getConfigs, specSelectors, schema, required, name, isRef, specPath, displayName } = this.props + let { getComponent, getConfigs, specSelectors, schema, required, name, isRef, specPath, displayName, + includeReadOnly, includeWriteOnly} = this.props const ObjectModel = getComponent("ObjectModel") const ArrayModel = getComponent("ArrayModel") const PrimitiveModel = getComponent("PrimitiveModel") @@ -70,7 +73,9 @@ export default class Model extends ImmutablePureComponent { schema={ schema } name={ name } deprecated={deprecated} - isRef={ isRef } /> + isRef={ isRef } + includeReadOnly = {includeReadOnly} + includeWriteOnly = {includeWriteOnly}/> case "array": return + required={ required } + includeReadOnly = {includeReadOnly} + includeWriteOnly = {includeWriteOnly}/> case "string": case "number": case "integer": diff --git a/src/core/components/models.jsx b/src/core/components/models.jsx index fa421f3b..1e779ced 100644 --- a/src/core/components/models.jsx +++ b/src/core/components/models.jsx @@ -90,7 +90,9 @@ export default class Models extends Component { specSelectors={ specSelectors } getConfigs = {getConfigs} layoutSelectors = {layoutSelectors} - layoutActions = {layoutActions}/> + layoutActions = {layoutActions} + includeReadOnly = {true} + includeWriteOnly = {true}/> const title = diff --git a/src/core/components/object-model.jsx b/src/core/components/object-model.jsx index d52fcb0c..a50478d1 100644 --- a/src/core/components/object-model.jsx +++ b/src/core/components/object-model.jsx @@ -19,12 +19,14 @@ export default class ObjectModel extends Component { isRef: PropTypes.bool, expandDepth: PropTypes.number, depth: PropTypes.number, - specPath: ImPropTypes.list.isRequired + specPath: ImPropTypes.list.isRequired, + includeReadOnly: PropTypes.bool, + includeWriteOnly: PropTypes.bool, } render(){ let { schema, name, displayName, isRef, getComponent, getConfigs, depth, onToggle, expanded, specPath, ...otherProps } = this.props - let { specSelectors,expandDepth } = otherProps + let { specSelectors,expandDepth, includeReadOnly, includeWriteOnly} = otherProps const { isOAS3 } = specSelectors if(!schema) { @@ -87,7 +89,12 @@ export default class ObjectModel extends Component { } { - !(properties && properties.size) ? null : properties.entrySeq().map( + !(properties && properties.size) ? null : properties.entrySeq().filter( + ([, value]) => { + return (!value.get("readOnly") || includeReadOnly) && + (!value.get("writeOnly") || includeWriteOnly) + } + ).map( ([key, value]) => { let isDeprecated = isOAS3() && value.get("deprecated") let isRequired = List.isList(requiredProperties) && requiredProperties.contains(key) diff --git a/src/core/components/parameter-row.jsx b/src/core/components/parameter-row.jsx index 59fe8954..dae0aece 100644 --- a/src/core/components/parameter-row.jsx +++ b/src/core/components/parameter-row.jsx @@ -105,6 +105,7 @@ export default class ParameterRow extends Component { // getSampleSchema could return null const generatedSampleValue = schema ? getSampleSchema(schema.toJS(), parameterMediaType, { + includeWriteOnly: true }) : null @@ -331,7 +332,8 @@ export default class ParameterRow extends Component { isExecute={ isExecute } specSelectors={ specSelectors } schema={ schema } - example={ bodyParam }/> + example={ bodyParam } + includeWriteOnly={ true }/> : null } diff --git a/src/core/components/response.jsx b/src/core/components/response.jsx index e3801290..afdef9fd 100644 --- a/src/core/components/response.jsx +++ b/src/core/components/response.jsx @@ -218,7 +218,8 @@ export default class Response extends React.Component { getConfigs={ getConfigs } specSelectors={ specSelectors } schema={ fromJSOrdered(schema) } - example={ example }/> + example={ example } + includeReadOnly={ true }/> ) : null } { isOAS3 && examplesForMediaType ? ( diff --git a/src/core/plugins/oas3/components/request-body.jsx b/src/core/plugins/oas3/components/request-body.jsx index c02a07e8..3b88299c 100644 --- a/src/core/plugins/oas3/components/request-body.jsx +++ b/src/core/plugins/oas3/components/request-body.jsx @@ -237,6 +237,7 @@ const RequestBody = ({ )} /> } + includeWriteOnly={true} /> ) } diff --git a/src/core/plugins/oas3/wrap-components/model.jsx b/src/core/plugins/oas3/wrap-components/model.jsx index b350b703..2476a529 100644 --- a/src/core/plugins/oas3/wrap-components/model.jsx +++ b/src/core/plugins/oas3/wrap-components/model.jsx @@ -10,7 +10,9 @@ class ModelComponent extends Component { getComponent: PropTypes.func.isRequired, getConfigs: PropTypes.func.isRequired, specSelectors: PropTypes.object.isRequired, - expandDepth: PropTypes.number + expandDepth: PropTypes.number, + includeReadOnly: PropTypes.bool, + includeWriteOnly: PropTypes.bool, } render(){