@@ -2,6 +2,9 @@ import { getOr } from "lodash/fp";
2
2
import React from "react" ;
3
3
import Markdown from "react-markdown/with-html" ;
4
4
5
+ import Filterable from "./Filterable" ;
6
+ import Nullable from "./Nullable" ;
7
+ import SubResponse from "./SubResponse" ;
5
8
import CharDisplay from "./charDisplay" ;
6
9
7
10
export const BodySchema = props => {
@@ -44,6 +47,11 @@ export const BodySchema = props => {
44
47
</ div >
45
48
{ properties &&
46
49
Object . keys ( properties )
50
+ . filter (
51
+ v =>
52
+ data . requestBody . content . application_json . schema . properties [ v ] !==
53
+ null
54
+ )
47
55
. sort ( sortByRequired )
48
56
. map ( ( p , i ) => {
49
57
const b =
@@ -76,13 +84,8 @@ export const BodySchema = props => {
76
84
}
77
85
) }
78
86
</ div >
79
- { b . x_linode_filterable && (
80
- < div className = "leading-xs mt-1" >
81
- < span className = "text-grey-dark text-sm" >
82
- Filterable
83
- </ span >
84
- </ div >
85
- ) }
87
+ { b . x_linode_filterable && < Filterable /> }
88
+ { b . nullable && < Nullable /> }
86
89
</ div >
87
90
< div className = "w-full lg:w-3/4" >
88
91
< div className = "text-sm leading-text-sm text-grey-darkest" >
@@ -101,6 +104,11 @@ export const BodySchema = props => {
101
104
/>
102
105
</ div >
103
106
</ div >
107
+ { b . properties && (
108
+ < div className = "px-4 mt-4 mb-4 ml-4 subResponse" >
109
+ < SubResponse dataSource = { b . properties } />
110
+ </ div >
111
+ ) }
104
112
</ div >
105
113
)
106
114
) ;
@@ -113,38 +121,29 @@ export const BodySchema = props => {
113
121
const s = data . requestBody . content . application_json . schema . allOf [ a ] ;
114
122
return (
115
123
s . properties &&
116
- Object . keys ( s . properties ) . map ( ( p , i ) => {
117
- const b = s . properties [ p ] ;
118
- return (
119
- b &&
120
- b . x_linode_cli_display !== 1 && (
121
- < div key = { i } className = "response-wrapper" >
122
- < div className = "lg:flex pt-2 mb-4 initResponse" >
123
- < div className = "w-full lg:w-1/4" >
124
- < div >
125
- < b > { p } </ b >
126
- </ div >
127
- < div className = "leading-xs" >
128
- { s . required &&
129
- s . required . map ( ( req , i ) => {
130
- if ( p === req ) {
131
- return (
132
- < span
133
- className = "text-BaseRed text-sm"
134
- key = { i }
135
- >
136
- Required
137
- </ span >
138
- ) ;
139
- }
140
- return false ;
141
- } ) }
142
- </ div >
143
- < div className = "leading-xs" >
144
- { data . requestBody . content . application_json . schema
145
- . required &&
146
- data . requestBody . content . application_json . schema . required . map (
147
- ( req , i ) => {
124
+ Object . keys ( s . properties )
125
+ . filter (
126
+ v =>
127
+ data . requestBody . content . application_json . schema . allOf [
128
+ v
129
+ ] !== null
130
+ )
131
+ . sort ( sortByRequired )
132
+ . map ( ( p , i ) => {
133
+ const b = s . properties [ p ] ;
134
+ return (
135
+ b &&
136
+ b . x_linode_cli_display !== 1 &&
137
+ b . readOnly !== true && (
138
+ < div key = { i } className = "response-wrapper" >
139
+ < div className = "lg:flex pt-2 mb-4 initResponse" >
140
+ < div className = "w-full lg:w-1/4" >
141
+ < div >
142
+ < b > { p } </ b >
143
+ </ div >
144
+ < div className = "leading-xs" >
145
+ { s . required &&
146
+ s . required . map ( ( req , i ) => {
148
147
if ( p === req ) {
149
148
return (
150
149
< span
@@ -156,35 +155,58 @@ export const BodySchema = props => {
156
155
) ;
157
156
}
158
157
return false ;
159
- }
158
+ } ) }
159
+ </ div >
160
+ < div className = "leading-xs" >
161
+ { data . requestBody . content . application_json . schema
162
+ . required &&
163
+ data . requestBody . content . application_json . schema . required . map (
164
+ ( req , i ) => {
165
+ if ( p === req ) {
166
+ return (
167
+ < span
168
+ className = "text-BaseRed text-sm"
169
+ key = { i }
170
+ >
171
+ Required
172
+ </ span >
173
+ ) ;
174
+ }
175
+ return false ;
176
+ }
177
+ ) }
178
+ </ div >
179
+ < div className = "leading-xs mt-1" >
180
+ { b . x_linode_filterable && (
181
+ < span className = "text-grey-dark text-sm" >
182
+ Filterable
183
+ </ span >
160
184
) }
185
+ </ div >
161
186
</ div >
162
- < div className = "leading-xs mt-1" >
163
- { b . x_linode_filterable && (
164
- < span className = "text-grey-dark text-sm" >
165
- Filterable
166
- </ span >
167
- ) }
187
+ < div className = "w-full lg:w-3/4" >
188
+ < div className = "text-sm leading-text-sm text-grey-darkest" >
189
+ { b . type } < CharDisplay data = { b } />
190
+ { b . pattern && (
191
+ < span className = "tag" > { b . pattern } </ span >
192
+ ) }
193
+ </ div >
194
+ < Markdown
195
+ source = { b . description }
196
+ escapeHtml = { false }
197
+ className = "api-desc"
198
+ />
168
199
</ div >
169
200
</ div >
170
- < div className = "w-full lg:w-3/4" >
171
- < div className = "text-sm leading-text-sm text-grey-darkest" >
172
- { b . type } < CharDisplay data = { b } />
173
- { b . pattern && (
174
- < span className = "tag" > { b . pattern } </ span >
175
- ) }
201
+ { b . properties && (
202
+ < div className = "px-4 mt-4 mb-4 ml-4 subResponse" >
203
+ < SubResponse dataSource = { b . properties } />
176
204
</ div >
177
- < Markdown
178
- source = { b . description }
179
- escapeHtml = { false }
180
- className = "api-desc"
181
- />
182
- </ div >
205
+ ) }
183
206
</ div >
184
- </ div >
185
- )
186
- ) ;
187
- } )
207
+ )
208
+ ) ;
209
+ } )
188
210
) ;
189
211
}
190
212
) }
0 commit comments