@@ -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