@@ -198,7 +198,7 @@ pub fn add_endpoint(
198198    // If this endpoint response has examples in schema.json, convert them to the 
199199    // OpenAPI format and add them to the endpoint response in the OpenAPI document. 
200200    let  response_examples = if  let  Some ( examples)  = & response_def. examples  { 
201-           get_openapi_examples ( examples) 
201+         get_openapi_examples ( examples) 
202202    }  else  { 
203203        IndexMap :: new ( ) 
204204    } ; 
@@ -251,6 +251,42 @@ pub fn add_endpoint(
251251
252252        let  sum_desc = split_summary_desc ( & endpoint. description ) ; 
253253
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+ 
254290        // Create the operation, it will be repeated if we have several methods 
255291        let  operation = openapiv3:: Operation  { 
256292            tags :  if  let  Some ( doc_tag)  = & endpoint. doc_tag  { 
@@ -274,7 +310,7 @@ pub fn add_endpoint(
274310            deprecated :  endpoint. deprecation . is_some ( ) , 
275311            security :  None , 
276312            servers :  vec ! [ ] , 
277-             extensions :   crate :: availability_as_extensions ( & endpoint . availability ) , 
313+             extensions, 
278314        } ; 
279315
280316
0 commit comments