Open6

cuelangでopenAPIを記述したい

yuucuyuucu

pathsの生成はソースコードを見る限り、対応していなさそう

yuucuyuucu

input

#Sample: {
  // user name
  name: string
}
#Sample2: {
  // user name
  name: string
  // Age of the person
  Age?: number & < 130
}
#Sample3: {
  string
}

output

{
   "openapi": "3.0.0",
   "info": {
      "title": "Generated by cue.",
      "version": "no version"
   },
   "paths": {},
   "components": {
      "schemas": {
         "Sample": {
            "type": "object",
            "required": [
               "name"
            ],
            "properties": {
               "name": {
                  "description": "user name",
                  "type": "string"
               }
            }
         },
         "Sample2": {
            "type": "object",
            "required": [
               "name"
            ],
            "properties": {
               "name": {
                  "description": "user name",
                  "type": "string"
               },
               "Age": {
                  "description": "Age of the person",
                  "type": "number",
                  "maximum": 130,
                  "exclusiveMaximum": true
               }
            }
         },
         "Sample3": {
            "type": "string"
         }
      }
   }
}
yuucuyuucu

このcuelangの記述量でtype: objectの定義や
description、required周り、maximumなどを定義できるのはかなり魅力的