syntax = "v1" info( title: "demo title" desc: "demo desc" author: "keson.an" date: "2024-06-25" version: "v1" ) // empty structure type Foo { } // type lit type Bar { Foo int `json:"foo"` Bar bool `json:"bar"` Baz []string `json:"baz"` Qux map[string]string `json:"qux"` } type Baz { Foo `json:"foo"` // array type Arr [2]int `json:"arr"` // nested type Bar { Foo string `json:"foo"` Bar bool `json:"bar"` Baz { Foo string `json:"foo"` Bar bool `json:"bar"` } Qux { Foo string `json:"foo"` Bar bool `json:"bar"` } `json:"qux"` } `json:"bar"` } type UpdateReq { Arg1 string `json:"arg1"` } type ListItem { Value1 string `json:"value1"` } type LoginReq { Username string `json:"username"` Password string `json:"password"` } type LoginResp { Name string `json:"name"` } type FormExampleReq { Name string `form:"name"` } type PathExampleReq { ID string `path:"id"` } type PathExampleResp { Name string `json:"name"` } @server( jwt: Auth prefix: /v1 group: g1 timeout: 3s middleware: AuthInterceptor maxBytes: 1048576 ) service Foo { @handler ping get /ping @handler update post /update (UpdateReq) @handler list get /list returns ([]ListItem) @handler login post /login (LoginReq) returns (LoginResp) @handler formExample post /form/example (FormExampleReq) @handler pathExample get /path/example/:id (PathExampleReq) returns (PathExampleResp) }