@@ -198,7 +198,7 @@ pub fn add_endpoint(
198
198
// If this endpoint response has examples in schema.json, convert them to the
199
199
// OpenAPI format and add them to the endpoint response in the OpenAPI document.
200
200
let response_examples = if let Some ( examples) = & response_def. examples {
201
- get_openapi_examples ( examples)
201
+ get_openapi_examples ( examples)
202
202
} else {
203
203
IndexMap :: new ( )
204
204
} ;
@@ -251,6 +251,42 @@ pub fn add_endpoint(
251
251
252
252
let sum_desc = split_summary_desc ( & endpoint. description ) ;
253
253
254
+ // add the x-state extension for availability
255
+ let mut extensions = crate :: availability_as_extensions ( & endpoint. availability ) ;
256
+
257
+ // add the x-codeSamples extension
258
+ let mut code_samples = vec ! [ ] ;
259
+ if let Some ( examples) = request. examples . clone ( ) {
260
+ if let Some ( ( _, example) ) = examples. first ( ) {
261
+ let request_line = example. method_request . clone ( ) . unwrap_or ( String :: from ( "" ) ) ;
262
+ let request_body = example. value . clone ( ) . unwrap_or ( String :: from ( "" ) ) ;
263
+ if !request_line. is_empty ( ) {
264
+ code_samples. push ( serde_json:: json!( {
265
+ "lang" : "Console" ,
266
+ "source" : request_line + "\n " + request_body. as_str( ) ,
267
+ } ) ) ;
268
+ }
269
+ }
270
+ }
271
+ if code_samples. is_empty ( ) {
272
+ // if there are no example requests we look for example responses
273
+ // this can only happen for examples that do not have a request body
274
+ if let Some ( examples) = response_def. examples . clone ( ) {
275
+ if let Some ( ( _, example) ) = examples. first ( ) {
276
+ let request_line = example. method_request . clone ( ) . unwrap_or ( String :: from ( "" ) ) ;
277
+ if !request_line. is_empty ( ) {
278
+ code_samples. push ( serde_json:: json!( {
279
+ "lang" : "Console" ,
280
+ "source" : request_line + "\n " ,
281
+ } ) ) ;
282
+ }
283
+ }
284
+ }
285
+ }
286
+ if !code_samples. is_empty ( ) {
287
+ extensions. insert ( "x-codeSamples" . to_string ( ) , serde_json:: json!( code_samples) ) ;
288
+ }
289
+
254
290
// Create the operation, it will be repeated if we have several methods
255
291
let operation = openapiv3:: Operation {
256
292
tags : if let Some ( doc_tag) = & endpoint. doc_tag {
@@ -274,7 +310,7 @@ pub fn add_endpoint(
274
310
deprecated : endpoint. deprecation . is_some ( ) ,
275
311
security : None ,
276
312
servers : vec ! [ ] ,
277
- extensions : crate :: availability_as_extensions ( & endpoint . availability ) ,
313
+ extensions,
278
314
} ;
279
315
280
316
0 commit comments